如何在每次按下时更改UIButton的图像

时间:2017-08-15 22:08:44

标签: swift uibutton

每次按下时,如何将UIButton从A更改为B,再将B更改为A?

不是.normal.highlighted,而是永久的。 我尝试了.highlighted方法,因为我找不到永久代码,这是我的代码:

func ChangeButton() {
    Button.setImage(A, for: .normal)
    Button.setImage(B, for: .highlighted)

2 个答案:

答案 0 :(得分:1)

感谢从另一个答案提到setBackgroundImage到Xavier L. 请尝试以下代码:

import UIKit
class ViewController: UIViewController {

    @IBOutlet var button: UIButton!
    var buttonActive = false

    override func viewDidLoad() {
        super.viewDidLoad()
        button.setBackgroundImage(UIImage(named: "apple"), for: .normal)
    }

    @IBAction func buttonPressed() {
        if buttonActive {
            button.setBackgroundImage(UIImage(named: "apple"), for: .normal)
        } else {
            button.setBackgroundImage(UIImage(named: "pineapple"), for: .normal)
        }
        buttonActive = !buttonActive
    }
}

你的故事板应该是这样的: Storyboard

N.B。在Stack Overflow上,您应该在询问之前执行一些操作。尝试包含您尝试过的一些代码。

答案 1 :(得分:0)

我建议更改backgroundImage,因为它会自动缩放,并且前面的按钮文字不会被覆盖。

如果它是自定义按钮,则在其初始化程序中:

self.addTarget(self, action: #selector(*yourfunctoswitchimages*), for: .touchUpInside)

...然后 yourfunctoswitchimages 可以检查当前背景图像是什么,并相应地切换它。

如果它不是自定义按钮,请在viewDidLoad或其他内容中添加目标。这里有很多示例代码。

在viewDidLoad()

yourButt.addTarget(self, action: #selector(switcheroo), for: .touchUpInside)

视图控制器中的另一个功能:

func switcheroo() 
{
    if yourButt.currentBackgroundImage == image1
    { 
        yourButt.setBackgroundImage(image2), for: .normal)
    }
    else { // ...set image to image1 }
}

yourButt当然是视图控制器的属性,这样它可以被viewDidLoad()和其中的其他函数访问。