IOS/Swift:检查按钮图像以切换按钮图像
Posted
技术标签:
【中文标题】IOS/Swift:检查按钮图像以切换按钮图像【英文标题】:IOS/Swift: check for button image to toggle button image 【发布时间】:2018-09-17 01:17:12 【问题描述】:我刚刚学习 Swift,并试图根据用户在两个图像之间的操作来切换按钮。最好只检查显示的图像名称并切换到另一个。
我能够从按钮获取图像,但不一定是它的名称。我的问题是如何将它与 Swift 中的图像名称进行比较。
func toggleImage()
var img = self.sendButton.image(for: .normal)//NO ERROR
if img.isEqual(image-one)
//ERROR HERE
//switch to image-two
else
//switch to image-one
提前感谢您的任何建议。
【问题讨论】:
类似问题:***.com/questions/39891315/swift-image-name-compare 你选择了非常艰难的方式来实现你想要的。考虑为UIButton
的不同状态使用不同的图像,例如selected
和正常。这样,当点击时,您可以将按钮的选定属性切换为真或假,并且图像会发生变化。
【参考方案1】:
有更好的方法。将按钮视为复选框。未选中状态为图像 1,选中状态为图像 2。
要将UIButton
设置为像复选框一样工作,请使用isSelected
属性。
sendButton.setImage(UIImage(named: "image1"), for: .normal)
sendButton.setImage(UIImage(named: "image2"), for: .selected)
// You may also need to set the image for the highlighted selected state.
sendButton.setImage(UIImage(named: "image2"), for: [.selected, .highlighted])
现在按钮知道两个图像,您可以使用 isSelected
属性在 和 之间切换。
func toggleImage()
sendButton.isSelected = !sendButton.isSelected
【讨论】:
这是一个不错的方法,但是,我可能还需要在某些时候使用 isselected。实际上有三种状态。 img、img1-selected 和 img2【参考方案2】:使用 ===
private let image-one = UIImage(named: "name1")
private let image-two = UIImage(named: "name2")
override func viewDidLoad()
sendButton.setImage(image-one, for: .normal)
func toggle image()
if self.sendButton.currentImage === image-one
.....
使用标志(不那么优雅,但更安全):
enum WhichImage
case image-one, image-two
private var whichImage: WhichImage = .image-one
您检查whichImage
并在图像更改时更新它,而不是检查图像。
【讨论】:
如果 private let image-one = ... 在函数内部,这应该工作吗? user6631314。它应该。谁在乎任务在哪里完成?!【参考方案3】:Set Images in Interface 方法只是在代码中改变按钮的状态。
这是改变状态的代码
@IBAction func fastButtonAction(_ sender: Any)
fastButton.isSelected = !fastButton.isSelected
【讨论】:
【参考方案4】:您需要获取图像名称并如下所示进行比较
if self.sendButton.currentImage == UIImage(named: "image-one")
//switch to image-two
else
//switch to image-one
【讨论】:
那会导致一直重新加载“image-one”,效率非常低。 @cyanide 您可以创建一个可以在启动时加载的变量,或者在开始使用后使用惰性变量加载。我们可以根据需求进行优化。 所以需要对代码示例进行相应的更改,否则会产生误导。以上是关于IOS/Swift:检查按钮图像以切换按钮图像的主要内容,如果未能解决你的问题,请参考以下文章