无法更改不同状态的 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
对我不起作用,尽管该按钮确实已启用。但也许这会让其他人头疼!
我想针对不同状态更改 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
对我不起作用,尽管该按钮确实已启用。但也许这会让其他人头疼!