如何使按钮按下以更改按钮背景色,然后再次按Xcode将其更改回原来的颜色?

时间:2019-09-11 11:50:49

标签: swift xcode

我正在Xcode上创建我的第一个应用程序,无法解决使按钮在按下时改变颜色并在再次按下时变回按钮的问题。

我在这里找到了有关先前主题的代码,并且创建了一个按钮并创建了一个函数

@IBAction func Button1Pressed(_ sender: Any) {
    if let button = sender as? UIButton {
        if button.backgroundColor == UIColor.black {
            button.backgroundColor = UIColor.red
        }
        else if button.backgroundColor == UIColor.red {
            button.backgroundColor = UIColor.black
        }
}

我在模拟器上运行代码,并在网上出现错误

class AppDelegate: UIResponder, UIApplicationDelegate { = Thread 1: signal SIGABRT .

如何使此代码正常工作?

我尝试了Mansueli和Abishek的解决方案,但都给了我相同的结果,但有错误:在左下角是在模拟器上运行后得到的错误。 (图片上有曼苏里码)

On the bottom left corner is the error i get after running on simulator. (On the picture there is M.Mansueli code)

2 个答案:

答案 0 :(得分:0)

首先使该按钮成为@IBOutlet,然后在您的函数中执行该操作。

@IBAction func Button1Pressed(_ sender: Any) {

    if buttonOutlet.backgroundColor == UIColor.black {
        buttonOutlet.backgroundColor = UIColor.red
    }
    else if buttonOutlet.backgroundColor == UIColor.red {
        buttonOutlet.backgroundColor = UIColor.black
    }

}

答案 1 :(得分:0)

为您的类中的按钮创建一个@IBOutlet引用,如图所示:

enter image description here enter image description here

现在您可以使用以下方法在印刷机上更改颜色:

将此代码添加到您的viewdDidLoad()

override func viewDidLoad() {
    button.setBackgroundImage(UIImage(color: .black), for: .normal)
    button.setBackgroundImage(UIImage(color: .red), for: .highlighted)
}

添加UIImage扩展名:

extension UIImage {
public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {

    let rect = CGRect(origin: .zero, size: size)
    UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
    color.setFill()
    UIRectFill(rect)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    guard let cgImage = image?.cgImage else { return nil }
    self.init(cgImage: cgImage)
}
}