子类 UI 具有属性的按钮没有改变 UI

Subclassed UIButton with properties isn't changing UI

我有一个非常简单的具有 1 个属性的 UIButton 子类:bgPropertyColor。情节提要中有 3 个按钮,它们都有指向该子类的出口。

我希望能够从视图控制器调整 bgPropertyColor 属性。在我下面的示例中,我可以访问 bgPropertyColor 属性,但是颜色(红色/蓝色/绿色)没有按照我的预期应用于按钮背景。

UIButton

class CustomButton:UIButton {

    var bgPropertyColor = UIColor.clear

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.backgroundColor = bgPropertyColor
    }

}

ViewController

class ViewController: UIViewController {

    @IBOutlet weak var b1: CustomButton!
    @IBOutlet weak var b2: CustomButton!
    @IBOutlet weak var b3: CustomButton!


    override func viewDidLoad() {
        super.viewDidLoad()
        b1.bgPropertyColor = .red
        b2.bgPropertyColor = .blue
        b3.bgPropertyColor = .green
    }

}

如何初始化子类按钮,以便我能够在视图控制器上微调每个按钮的属性(背景颜色)?

您可能需要

var bgPropertyColor : UIColor = UIColor.clear {
  didSet {
    self.backgroundColor  = bgPropertyColor 
  }
}

因为更改 bgPropertyColor 不会像您预期的那样反映到 backgroundColor,也可能是 属性 没用,因为您可以直接更改 backgroundColor IB/Code