我正在尝试使用UIButton作为开关。轻按按钮时,按钮图像应更改为(atcs.png),状态应为(.selected)。
再次轻按图像时,按钮图像应再次变为(actns.png),状态应为(.normal)。
以下是我当前代码的示例:
@IBOutlet weak var atcBtn: UIButton!
@IBAction func atcTapped(_ sender: UIButton) {
if atcBtn.isSelected {
atcBtn.setImage(UIImage(named: "atcs.png"), for:.selected)
} else {
atcBtn.setImage(UIImage(named: "atcns.png"), for:.normal)
}
}
这不起作用。缺少什么吗?尝试了这里列出的几乎所有解决方案,但没有任何解决方法。
最佳答案
首先,将setImage
代码移动到viewDidLoad
。没有理由重复设置这些图像:
atcBtn.setImage(UIImage(named: "atcs.png"), for:.selected)
atcBtn.setImage(UIImage(named: "atcns.png"), for:.normal)
接下来,在点击按钮时切换
isSelected
属性:@IBAction func atcTapped(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
还要注意-使用
sender
而不是对atcBtn
进行硬编码。关于ios - 使用UIButton作为开关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52141691/