如何在不设置任何 @IBinspectable 属性 的情况下在 Storyboard 中的 UIView 上实时执行更改?

How to perform changes live on UIView in Storyboard without setting any @IBinspectable property?

在情节提要中我有 UITextField,我还创建了自定义 class:

class WLTextField: UITextField {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        layer.cornerRadius = 2
        layer.masksToBounds = true
        layer.borderColor = UIColor.grayColor().CGColor
        layer.borderWidth = 1
    }
}

然后将此 class 附加到我的 UITextField:

但是,Storyboard 中没有结果。我怎样才能做到这一点?我需要得到像 @IBDesignables 这样的效果。但是因为我知道我需要为每个文本字段设置什么,所以我不需要设置一个值然后在 didSet 内更新它。

我是否需要至少设置一个值才能在某些 UIView 的 Storyboard 中进行更改?

为了让组件在 Interface Builder 中呈现,您必须将 class 标记为 @IBDesignable 并且您必须实施初始化 init(frame: CGRect) -

@IBDesignable class WLTextField: UITextField {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupLayer()
    }

    required override init(frame: CGRect) {
        super.init(frame: frame)
        setupLayer()
    }

    func setupLayer () {
        layer.cornerRadius = 2
        layer.masksToBounds = true
        layer.borderColor = UIColor.grayColor().CGColor
        layer.borderWidth = 1
    }
}