我想向我的应用添加声音。我添加了带有两个图像的UIButton,它们分别是soundON和soundOFF。 当我第一次在应用程序中调用声音设置时,它们在每个图像上都可以很好地切换。 但是,当我第二次返回声音设置时,当显示soundOn图像时,好像soundOff图像不会消失。 奇怪的是,代码是如此简短和简单。
func soundButton() {
sounds = UIButton(frame : CGRect(x: 65, y: 70, width: 40, height:40))
sounds.setImage(UIImage(named : "soundON"), for : .normal)
sounds.setImage(UIImage(named : "soundOFF"), for : .selected)
sounds.showsTouchWhenHighlighted = true
sounds.addTarget(self, action: #selector(soundButtonTapped), for: .touchUpInside)
self.soundView.addSubview(sounds)
}
@objc func soundButtonTapped(_ sender: Any) {
sounds.isSelected.toggle()
isSoundOn.toggle()
}
我添加了一个视频来显示该问题,因为这样可以节省大量打字操作。
http://www.reeflifeapps.com/soundError.mov
非常感谢您的帮助。
更新: 我在UIView上有一个按钮,该按钮在拼图启动时就隐藏了。当用户按下“声音设置”图标时,声音设置UIView被取消隐藏。我在此功能上具有按钮来取消隐藏声音设置。我将其移至viewDidLoad()并对其进行了修复。
答案 0 :(得分:0)
我建议您定义一个布尔变量,以保留按钮的当前状态。然后,应根据变量的当前状态设置按钮的当前图像。
ecode ename
E1 NIKHIL
E2 Nikhil.
E3 Nikhil??
E4 sunita..
E5 sunita..
E6 sunita
E8 HIREN
E9 HIREN..
E10 HIREN??
如果您仍想使用var isSoundOn = false
@objc func soundButtonTapped(_ sender: Any) {
isSoundOn.toggle()
if isSoundOn {
// your logic when sound on (set button selected image, action etc)
} else {
// logic when sound off (set button not selected image, action etc)
}
}
作为布尔变量,请不为soundButton.isSelected
和soundButton.setImage(yourImage, for: .selected)
中的不同状态定义图像,并按如下方式定义它们:
soundButton.setImage(yourImage, for: .normal)
可以使用以上两种方法之一。
更新:
如劳埃德·凯伊泽(Lloyd Kaijzer)所述,soundButton.setImage(soundButton.isSelected ? soundOnImage : soundOffImage, for: .normal)
更新为isSoundOn = !isSoundOn