我正在制作关于欧洲国家的简单测验应用程序,我有一张地图和三个按钮,下面有国家名称,其中一个是正确的,当然还有两个不正确。我想强调不正确(如果用户点击不正确的按钮)按钮为红色并更正为绿色,如果用户单击正确按钮我想要突出显示为绿色,之后可能5s回到与最初相同的颜色。我知道如何更改按钮颜色,但我不知道为5s做那个并回到默认颜色。我怎样才能做到这一点 ?在我用来改变按钮颜色的代码下面
UIButtonOutlet.Backgroundcolor.Uicolor.green
但它的默认绿色,所以我无法设置我的颜色。
答案 0 :(得分:0)
你可以尝试这样的事情。首先在您的班级中声明一个UIButton
个实例,然后在设置scheduledTimer
按钮后声明错误并使用backgroundColor
,并使用您先创建的按钮存储该按钮参考。
var selectedButton = UIButton()
现在,在设置按钮selectedButton
时使用此backgroundcolor
。
btnOutlet.backgroundcolor = .green //For correct
btnOutlet.backgroundcolor = .red //For incorrect
self.selectedButton = btnOutlet
//Now scheduled the timer for 5.0 sec
Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(setButtonBGBack), userInfo: nil, repeats: false)
在班级中添加setButtonBGBack
方法
func setButtonBGBack() {
self.selectedButton.backgroundcolor = .blue //Set to default here
self.selectedButton = UIButton()
}
答案 1 :(得分:0)
让我们说你有你的代码来改变“changeColor”函数中的颜色:
var correctButton: UIButton
func changeColor() {
if correctButton.backgroundColor == .green {
correctButton.backgroundColor = .lightGray //back to original color
}
}
这实质上是将正确的按钮颜色更改回其默认值(无论可能是什么),如果调用func时它是绿色的。
现在使用它,我们可以在连接到每个按钮的IBAction内部做一些工作:
@IBAction func buttonClicked(sender: UIButton) {
if sender.titleLabel?.text == "Correct Answer" {
button.backgroundColor = .green
correctButton = button //set the correct button variable so the changeColor func can be used
let timer = Timer.init(timeInterval: 5, target: self, selector: #selector(changeColor), userInfo: nil, repeats: false)
} else if sender.titleLabel?.text == "False Answer 1" || sender.titleLabel?.text == "False Answer 2" {
button.backgroundColor = .red
}
}
所以在这段代码中,如果你单击正确答案的按钮(你可以通过标签或其他方式识别它,但我只是决定使用它的文本)然后颜色立即设置为绿色,然后设置了correctButton变量,但随后启动了一个计时器,在五秒钟之后将调用您的changeColor
func,然后将其更改回原始颜色。
希望这会有所帮助:)
修改强>:
当然,我的方法假定您使用故事板来创建这些按钮。如果您以编程方式创建它们,那么NiravD的方法将更好地工作。