首页 > 解决方案 > UIButton 高亮状态仅适用于 .normal -> .selected?

问题描述

使用 IB,我将图像分配给按钮的 .normal、.highlighted 和 .selected 状态。在 .normal->.selected 转换 ( someButton.isSelected = true) 期间按下按钮时,.highlighted 图像在触摸时正确呈现,但是当设置someButton.isSelected = false返回 .normal 时,我看到标准快速淡入淡出转换而不是我的 .highlighted 图像。我在2013 年的这篇 SO 帖子中看到了一个类似的问题,但是我想知道该解决方案是否仍然适用于 Swift 4,因为我不太了解它。我的目标是在每次按钮触摸时呈现“发光”图像。谢谢!

在此处输入图像描述

这是完整的代码:

@IBAction func someButtonArray(_ sender: UIButton) {
    UIView.transition(with: sender, duration: 0.3, options: .transitionCrossDissolve, animations: {
        sender.setImage(UIImage(named: "TRANSITION_Pad-10.png"), for: UIControl.State.highlighted)
    }, completion: nil)
    if sender.isSelected == true {
        UIView.transition(with: sender, duration: 0.3, options: .transitionCrossDissolve, animations: {
            sender.setImage(UIImage(named: "INITIAL_Pad-13.png"), for: UIControl.State.normal)
        }, completion: nil)
        sender.isSelected = false
} else if sender.isSelected != true {
    sender.isSelected = true
    for buttons in 0...11 where buttons != (sender.tag) {
        someButtonArray[buttons].isSelected = false
    }
  }
    tableView.reloadData()
}

标签: iosswiftuibutton

解决方案


在视图中执行此操作确实加载

        yourButtonObj.adjustsImageWhenHighlighted = true

推荐阅读