无法更改不同状态的UI按钮图像

时间:2016-12-07 08:46:53

标签: ios swift uibutton uiimage state

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

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

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

这只会使一些看起来变暗。

我做错了什么?我只是想让我的按钮外观在不同状态下相同,怎么样?

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

6 个答案:

答案 0 :(得分:0)

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

button.setImage(image, forState: .Normal)

How to change UIButton image in Swift

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这对我有帮助(swift 3.0)

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

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

答案 3 :(得分:0)

您也可以通过StoryBoard完成此操作。 选择按钮,获取身份检查员并执行以下操作: - 首先将buttonType设置为自定义,而不是系统。 其次选择状态Config让我们说默认值并在" image"中给出 imageName。属性,同样选择其他状态配置(突出显示,禁用,选择等)并根据您的需要设置图像。 然后在代码中,您只需要控制并设置按钮的状态,并向您显示相应的图像。

答案 4 :(得分:0)

<iframe src="http://localhost:8080?queryParameter=1&queryParameter=2&queryParameter3" />

//触发操作

    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)

答案 5 :(得分:0)

对于仍然使用自定义按钮仍存在此问题(当前为Xcode 10.0)的用户,我发现我可以更改文本和/或图像,而不是:

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

我用了这个:

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

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