好习惯,先上 源码 。
先创建一个UIView文件和一个Xib文件,在Xib文件里设置如下,
在UIView文件中,不是用 -awakeFromNib()
作为构造器,而是正常的 -init(frame: CGRect)
。
override init(frame: CGRect) { super.init(frame: frame) xibSetup() }
而 -xibSetup()
才是关键,具体可看源码。
如果需要UIView和Xib文件建立控件属性关联,是设置Xib文件的File`s Owner, 而不是设置View的Custom Class 。
设置了File`s Owner就可以像往常一样拖线了。
如果想在 Main.storyboard
文件中直接使用此Xib,同时也想在SB中设置属性,那怎么使用呢?
1.在SB中加入一个UIView,将其Class设置成 XibView
2.使用 @IBInspectable
@IBInspectable var title: String? { get { return xibLabel.text } set { xibLabel.text = newValue } }
添加了 @IBInspectable
之后,就可以像系统自带的控件一样设置属性了。