以编程方式设置 IBInspectable

Set IBInspectable programmatically

我想根据我获得的互联网信息设置不同的 IBInspectable 项目。例如,我有用于绿色、红色和橙色圆圈的 IBInspectables。如果请求说绿色,我想将 isGreen inspectable 设置为 Yes,其他设置为 no。其他两个也一样。 可以看到 IBInspectables here。我知道我可以用我放在那里的代码来做到这一点,但是有没有办法以编程方式切换它们?

任何 IBInspectable 都只是一个 属性 编码以供在 IB 中查看。所以如果你有这个:

@IBInspectable var isGreen:Bool? {
    didSet {
        // code to color circle?
    }
}

你可以这样做:

self.isGreen = true

你听起来很困惑。术语 IBInspectable 描述了具有 @IBInspectable 标记的视图对象的 属性。这告诉 Interface Builder 您希望能够从 Interface Builder 内部更改 属性。

除了可从 Interface Builder 编辑外,IBInspectable 属性 与任何其他 属性.

没有什么不同

如果你有一个 class CircleView,直径 属性:

class FooView: UIView {
  @IBInspectable var diameter: CGFloat {
    didSet {
      //Code to do something with a change to the diameter property
    }
}

并且您的视图控制器中有一个带有插座的 FooView 对象,然后您可以在代码中更改自定义 属性 的值,就像任何其他 属性:

class MyViewController: UIViewController {

  @IBOulet weak var fooView: FooView!

  @IBAction func buttonTapped(sender: UIButton) {
    fooView.diameter += 5
  }
}