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:检查按钮图像以切换按钮图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios swift 中使用故事板平均划分按钮图像?

IOS SWIFT-基于uibutton图像的调用代码块

Android:创建一个带有图像且没有文本的切换按钮

TableViewCell Swift中的切换(复选框)按钮

UIButton 图像仅更改一个按钮

UIButton 在焦点上将图像更改回原始图像(tvOS)