无法更改不同状态的 UIbutton 图像

Can't change UIbutton image for different state

我想针对不同状态更改 UIButton 的图像。为此,我使用:

btn.setImage(UIImage(named: "blabla"), for .normal)

btn.setImage(UIImage(named: blabla2), for .disabled)

这只会使一些变暗。

我做错了什么?我只想让不同状态下的按钮外观相同,如何?

(我的按钮类型 - .system)。

你只需要为状态设置一个。如果你不为不同的状态设置另一个图像。它在所有州看起来都一样。

button.setImage(image, forState: .Normal)

How to change UIButton image in Swift

用于显示禁用按钮设置图像

let btn  = UIButton(type: .Custom)
btn.setImage(UIImage(named: blabla2), for .disabled)

然后

btn.enabled = false // to display Disable image
btn.enabled = true // to display Normal image

这对我有帮助 (swift 3.0)

btn.setImage(UIImage(named:"yourFriend")?.withRenderingMode(.alwaysOriginal), for: .normal)

btn.setImage(UIImage(named:"yourFriend")?.withRenderingMode(.alwaysOriginal), for: .disabled)

您也可以通过 StoryBoard 简单地执行此操作。 Select 按钮,转到身份检查器并执行以下操作:- 首先将 buttonType 设置为 custom 而不是 system。 其次选择状态配置让我们说默认并在 "image" 属性 中给出 imageName,类似地选择其他状态配置 (突出显示,禁用,选择等) 并根据您的需要设置图像。 然后在后面的代码中你只需要控制和设置按钮的状态,相应的图像就会显示给你。

    private let button1: UIButton = {
        let button = UIButton(type: .custom)
        button.setImage(UIImage(named:"firstButtonNormalStateImage"), for: .normal)
        button.setImagesetImage(UIImage(named:"firstButtonSelectedStateImage"), for: .selected)
        return button
    }()

    private let button2: UIButton = {
        let button = UIButton(type: .custom)
        button.setImage(UIImage(named:"secondButtonNormalStateImage"), for: .normal)
        button.setImage(UIImage(named:"secondButtonSelectedStateImage"), for: .selected)
        return button
    }()

    // implement for example in viewDidLoad()

    button1.addTarget(self, action: #selector(firstButtonDidTap), for: .touchUpInside)
    button2.addTarget(self, action: #selector(secondButtonDidTap), for: .touchUpInside)

//触发动作

    @objc func firstButtonDidTap() {
        button1.isSelected = true
        button2.isSelected = false
    }

    @objc func secondButtonDidTap() {
        button2.isSelected = true
        button1.isSelected = false
    }

对于使用自定义按钮仍然遇到此问题(当前 Xcode 10.0)的任何人,我发现我可以更改文本 and/or 图片,而不是:

myButton.setTitle("Hi", for: [.normal])

我用过这个:

myButton.setTitle("Hi", for: []) //remove specific states

我不知道为什么 .normal 对我不起作用,尽管该按钮确实已启用。但也许这会让其他人头疼!