Swift 设置UIButton选中状态(UIControlState.selected)且高亮(UIControlState.highlighted)时的图片

需求

设计师给了四类图片, 普通状态显示加号(+)图片, 按下时显示加号高亮图片, 选中时显示减号(-)图片, 选中按下时显示减号高亮图片.

  • 普通状态
  • 高亮状态
  • 选中状态
  • 选中-高亮状态

normal.png

highlight.png

select_normal.png

select_highlight.png

使用UIButton实现上述效果

代码大致如下:

button.setImage(UIImage(named: "normal"), for: .normal) 
button.setImage(UIImage(named: "selected_normal"), for: .selected)
button.setImage(UIImage(named: "highlighted"), for: .highlighted)
button .addTarget(self, action: #selector(buttonAction(sender:)), for: .touchUpInside)

@objc fileprivate func buttonAction(sender: UIButton) {
    sender.isSelected = !sender.isSelected
}

问题

加号状态按下时, 可正常显示加号高亮图片; 当减号状态按下时显示系统灰色的高亮加号图片

2017-11-17 09_00_33.gif

解决

设置选中且高亮状态时的图片

button.setImage(UIImage(named: "selected_highlighted"), for: UIControlState.selected.union(.highlighted))

效果如下: 2017-11-17 09_07_56.gif

Loading Disqus comments...
Table of Contents