iOS / Swift:检查按钮图片以切换按钮图片

时间:2018-09-17 01:17:12

标签: ios swift uibutton

我只是在学习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
    }
}

预先感谢您的任何建议。

4 个答案:

答案 0 :(得分:2)

  1. 使用===

    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 { ..... } }

  2. 使用标志(不太优雅,但更安全):

    enum WhichImage { case image-one, image-two } private var whichImage: WhichImage = .image-one

您无需检查图像,而是检查whichImage并在更改图像时对其进行更新。

答案 1 :(得分: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
}

答案 2 :(得分:0)

您需要获取图像名称,并进行如下比较

  if self.sendButton.currentImage == UIImage(named: "image-one") {
           //switch to image-two
            }else {
    //switch to image-one
        }

答案 3 :(得分:0)

在界面中设置图像接近代码中按钮的刚刚更改状态。

enter image description here enter image description here

这是更改状态的代码

WebView