UIButton 具有正常/默认、突出显示和选定的图像。然后我有一个IBAction
被调用的方法Touch Down
。该方法更改突出显示的图像,具体取决于它是否被选中。但是当按钮被选中时,该方法被调用,因此高亮图像被改变,但是显示的是带有色调的正常/默认图像。我已经测试了使用的图像不在nil
. 当处于选中状态的 UIButton 被按下时,会发生什么情况会显示带有颜色的正常状态。为什么不使用突出显示图像,是否有另一种显示选定突出显示图像的方式?
问问题
5193 次
2 回答
2
为什么要在 IBAction 方法中设置高亮状态?您只需要在创建按钮时为其设置突出显示的图像。它会自动切换。当没有分配突出显示的图像时,选择时添加色调是“选择”的默认行为。
如果您使用 Interface Builder,只需在此处分配突出显示的图像。
我假设您正在寻找将 IBAction 方法设置为touchUpInside
事件的正常按钮选择行为。
于 2012-08-21T17:13:05.407 回答
1
我通过使用选定的状态和通知(而不是通过 UI)解决了这个问题。当调用通知时,我将图像更改为默认状态,更改选定状态,然后更改选定状态的图像。
更新:我从另一个与我类似的问题中想出了一个更好的主意。做到这一点的方法是setSelected
- (void)setSelected:(BOOL)selected
{
if ( selected )
{
[self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateNormal];
[self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateSelected];
[self setImage:[CFCHStyleSheet imageForTickButtonCheckedDisabled] forState:UIControlStateDisabled];
}
else
{
[self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateNormal];
[self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateSelected];
[self setImage:[CFCHStyleSheet imageForTickButtonUncheckedDisabled] forState:UIControlStateDisabled];
}
[super setSelected:selected];
}
于 2012-10-01T15:16:55.320 回答