如何在不设置任何 @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
}
}
在情节提要中我有 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
}
}