我想要一个简单的类,当它被选中时,它可以改变按钮上的背景和文本的颜色。
我有这个:
class buttonSelected : UIButton {
override var highlighted: Bool {
get {
return super.highlighted
}
set {
backgroundColor = UIColor(red: 0.27, green: 0.29, blue: 0.31, alpha: 1.0)
//backgroundColor = UIColor.whiteColor()
setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
println(tag)
super.highlighted = newValue
}
}
}
这个子类非常有用。我手动将标签添加到每个按钮。第一个问题是为什么
pritnln(tag)
显示两次?
当用户再次按下按钮时,恢复此状态的最佳方法是什么。我不能再次突出显示子类,而只剩下选定的禁用类。我通过cmd在突出显示的文本上获得了此信息。
关于第一个问题,println(tag)会显示两次,因为突出显示的值会发生两次更改:首先是单击按钮时(其值变为true),其次是释放单击时(其值变为false)。
关于第二个问题,达到您所期望的最佳方法是覆盖选定的var并根据newValue设置其set方法的颜色,但是要达到此目的,您必须以某种方式更改选定的值,而我的第一个想法是使用突出显示的变量,您已经通过这样做突出显示了该变量
override var highlighted: Bool {
get {
return super.highlighted
}
set {
if(newValue){
self.selected = !self.selected
}
super.highlighted = newValue
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句