gpt4 book ai didi

ios - UIButton 不在两个图像之间切换 Swift 4.2

转载 作者:行者123 更新时间:2023-11-29 05:54:46 25 4
gpt4 key购买 nike

我想向我的应用程序添加声音。我添加了一个带有两个图像的 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() 并修复了它。

最佳答案

我建议您定义一个 bool 变量来保持按钮的当前状态。然后,您应该根据变量的当前状态设置按钮的当前图像。

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 作为 bool 变量,请不要soundButton.setImage(yourImage, for: .selected)soundButton.setImage(yourImage, for: .normal) 并将它们定义如下:

soundButton.setImage(soundButton.isSelected ? soundOnImage : soundOffImage, for: .normal)

可以使用上述两种方法之一。

更新:

正如 Lloyd Kaijzer 所说,isSoundOn = !isSoundOn 更新为 isSoundOn.toggle()

关于ios - UIButton 不在两个图像之间切换 Swift 4.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55273859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com