UIButton突出显示状态图像



我有一个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))

最新更新