UIButton具有普通/默认,突出显示和选定的图像。然后,我在IBAction
上调用Touch Down
方法。该方法根据选择的内容更改突出显示的图像。但是当选择按钮时,会调用该方法,因此高亮显示图像会发生变化,但显示的是带有色调的普通/默认图像。我测试过使用的图像不是nil
。当按下处于选定状态的UIButton时,会显示带有色调的正常状态。为什么不使用高亮图像,是否有另一种显示所选高光图像的方法?
答案 0 :(得分:2)
为什么要在IBAction方法中设置突出显示的状态?您只需在创建时为您设置突出显示的图像按钮。它会自动切换。选中时添加色调是'选择'的默认行为。没有分配高亮显示的图像时。
如果您使用Interface Builder,只需在其中指定突出显示的图像。
我假设您正在寻找正常的按钮选择行为,并将您的IBAction方法设置为touchUpInside
事件。
答案 1 :(得分: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];
}