从自定义类更新按钮属性

时间:2015-11-19 06:56:21

标签: swift

我有一个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()

我相信我刚刚更新了该属性,但我需要重新绘制按钮以查看新颜色。我不确定最好的方法。

2 个答案:

答案 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()
    }
}