我正在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的解决方案,但都给了我相同的结果,但有错误:在左下角是在模拟器上运行后得到的错误。 (图片上有曼苏里码)
答案 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引用,如图所示:
现在您可以使用以下方法在印刷机上更改颜色:
将此代码添加到您的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)
}
}