我有一个UIButton,它继承自定义类ColorButton
。
@IBDesignable
class ColorButton: UIButton {
@IBInspectable
var buttonColor: UIColor?
override func drawRect(rect: CGRect) {
let path = UIBezierPath(ovalInRect: rect)
buttonColor?.setFill()
path.fill()
}
}
我可以初步设置按钮的颜色,但是当我尝试使用以下方法更改它时,没有任何变化。
myButton.buttonColor = UIColor.blueColor()
我相信我刚刚更新了该属性,但我需要重新绘制按钮以查看新颜色。我不确定最好的方法。
答案 0 :(得分:1)
现在,只有属性在设置时不执行任何操作。您需要设置backgroundColor
parrent类属性(这是您的UIButton
的属性)来解决此问题:
@IBDesignable
class ColorButton: UIButton {
@IBInspectable
var buttonColor: UIColor? {
get {
return self.buttonColor
}
set {
self.backgroundColor = newValue
}
}
}
但在您的示例中,您不需要为其创建自定义类。如果您只获得此功能,则可以从普通backgroundColor
对象调用UIButton
答案 1 :(得分:0)
我复制你的代码,并在我的演示中使用它。当我在IB中更改“buttonColor”时它工作正常。所以当您在代码中更改“buttonColor”时,您必须重绘按钮:
var buttonColor: UIColor?{
didSet{
setNeedsDisplay()
}
}