我有一个UIButton
,我设置它为:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *imageNormal = [UIImage imageNamed:@"normal.png"];
UIImage *imageNormalHover = [UIImage imageNamed:@"normalHover.png"];
UIImage *imageSelected = [UIImage imageNamed:@"selected.png"];
UIImage *imageSelectedHover = [UIImage imageNamed:@"selectedHover.png"];
[myButton setImage:imageNormal forState:UIControlStateNormal];
[myButton setImage:imageSelected forState:UIControlStateSelected];
if (boolVar) {
[myButton setSelected:YES];
[myButton setImage:imageSelectedHover forState:UIControlStateHighlighted];
} else {
[myButton setImage:imageNormalHover forState:UIControlStateHighlighted];
}
问题是当状态正常时,我尝试按下按钮,我正确地看到图像normalHover.png
,但当选择状态时,我尝试按下按钮,我仍然看到normalHover.png
而不是selectedHover.png
。似乎与UIButton
我无法改变突出显示的图像。你怎么解决?
您需要为UIControlStateSelected | UIControlStateHighlighted
组合状态设置图像:
[myButton setImage:imageSelectedHover forState:(UIControlStateSelected | UIControlStateHighlighted)];
因为当按钮被选中时,这两种状态都是开启的,并且你通过点击它来突出显示它
在swift中使用union
:
myButton.setImage(imageSelectedHover, forState: UIControlState.Selected.union(UIControlState.Highlighted))