我一直在玩IBInspectable / IBDesignable,如本文所述:http://nshipster.com/ibinspectable-ibdesignable/。
它显示了如何进行扩展以在storyboard中添加额外的编辑选项。但问题是您无法在预览中看到这些更改。为此,您需要子类化,使用IBDesignable
并执行didset{}
内容。
这个问题是你需要创建每个stock UIView
子类的子类。所以是UILabel
,UITextField
的子类,依此类推。每次你必须复制/粘贴常规的UIView
内容,如边框和角半径。
我不相信Swift支持多重继承,这会使这更容易。
假设您IBDesignable
的{{1}}子类名为UIView
。有没有办法制作,例如IBView
是UILabel
的子类,而不是IBView
?
最后,我在寻找是否有办法让UIView
减少繁琐。
答案 0 :(得分:2)
和您一样,我正在努力寻找更好的解决方案来使用IBDesignable。
我做了什么来避免重复相同的代码:
检查此代码:
extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(cgColor: layer.borderColor ?? UIColor.clear.cgColor)
}
set {
layer.borderColor = newValue?.cgColor
}
}
@IBInspectable var borderWidth: Double {
get {
return Double(layer.borderWidth)
}
set {
layer.borderWidth = CGFloat(newValue)
}
}
}
@IBDesignable
class BorderView: UIView { }
@IBDesignable
class BorderButton: UIButton { }
我希望它可以帮到你!