UIButton的状态变化,有可能出乎你的意料,这里就来说说变化中间的highlighted状态:
从normal --> highlighted --> selected
,这个变化过程大家都知道,
然而从selected --> normal
并不是这样,中间的状态是.selected | .highlighted
。
如果你的按钮时是selected状态,点击进入高亮状态,展示的并不是你需要的图片,此时就需要设置.selected | .highlighted
这种状态的图片了。
// OC
[button setImage:[UIImage imageNamed:@"imageName"] forState:UIControlStateSelected | UIControlStateHighlighted];
// Swift
button.setImage(UIImage(named: "imageName"), for: .normal)
button.setImage(UIImage(named: "imageName"), for: .selected)
// `normal` -- `selected`
button.setImage(UIImage(named: "imageName"), for: .highlighted)
// `selected` -- `.selected | .highlighted` -- `normal`
button.setImage(UIImage(named: "imageName"), for: [.selected, .highlighted])
不需要高亮状态的需求:
如果不需要高亮状态,可以自定义UIButton,重写setHighlighted方法,如下:
// OC
- (void)setHighlighted:(BOOL)highlighted {
}
// Swift
class CustomBtn: UIButton {
override var isHighlighted: Bool {
set { }
get {
return false
}
}
}