优雅地自定义XibView

优雅地自定义XibView

好习惯,先上源码

先创建一个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之后,就可以像系统自带的控件一样设置属性了。