Xcode: UIButton setImage 不改变按钮的图片

Xcode: UIButton setImage does not change the image of the button

注意:其他人也提出了类似的问题,none 提供的答案解决了我的问题。

这是我的代码:

   @IBOutlet var testButton:UIButton!
    override func viewDidLoad() {
       self.testButton.setImage(UIImage(named: "icn_checkbox_")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
        self.testButton.setImage(UIImage(named: "icn_checked")?.imageWithColor(color: CMStyle.darkBlueColor), for: .selected)
        
    }
 @IBAction func testButtonAction(_ sender: Any) {
        print("INSIDE testButtonAction")
              self.testButton.isSelected = !self.testButton.isSelected
              print("self.testButton.isSelected: ",self.testButton.isSelected)
    }

这是按钮:
.
这些是按钮的特征:
.
这是 icn_checkbox_ 用于 .normal 状态的图像:
这是用于 .selected 状态的 icn_checked 图像:

testButtonAction 中的代码被执行。所以我真的不明白为什么图像不会改变(为什么按钮没有被选中)。

你可以使用这个:

@IBOutlet var testButton: UIButton!
override func viewDidLoad() {
       self.testButton.setImage(UIImage(named: "icn_checkbox_")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
}

@IBAction func testButtonAction(_ sender: Any) {
       print("INSIDE testButtonAction")
       self.testButton.isSelected = !self.testButton.isSelected
       if self.testButton.isSelected {
          self.testButton.setImage(UIImage(named: "icn_checked")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
       } else {
          self.testButton.setImage(UIImage(named: "icn_checkbox_")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
       }
    }

您可以只在 Storyboard 中为按钮状态设置图像,其中 Default = .normal 和 Selected = .selected

选择选中的并在那里设置图像。如果您使用的是模板图像,则带颜色的图像类似于 tintColor