Swift协议可轻松创建可重用的基于XIB的自定义视图

在我的工作中使用了很多在Interface Builder中设计的自定义视图,我发现自己重写了相同的代码以使XIB中的视图无效。 然后,在阅读了一些文章之后,我发现协议可能是实现此目的的最佳方法(它有助于编写更少的代码)。

这里我们有协议:

使用此协议,自定义视图在被包含它的情节提要实例化时将自动从关联的XIB加载其自身的内容,而无需编写任何其他代码。 这将只是一行代码。

一种 当用作XIB的文件的所有者时,UIView子类可以符合此协议。 笔尖需要与类名称相同的名称,并且需要位于该类的束中。

如何使用:

声明您的自定义视图符合NibFileOwnerLoadable协议

然后,您应该使用loadNibContent()覆盖init?(coder:) ,以便将其关联的XIB作为子视图加载并自动添加约束。 因此,假设您的自定义UIView子类名为SearchView,则代码将为:

  最后一堂SearchView:UIView,NibFileOwnerLoadable { 
  需要初始化吗?(编码器aDecoder:NSCoder){ 
super.init(编码器:aDecoder)
loadNibContent()
}
  } 

在无法使用loadNibContent()的情况下(例如,因为您需要对子视图进行特定的配置),无论如何,您都可以使用此协议通过使用InstantiateFromNib()来仅实例化XIB的视图。

谢谢你的时间! 希望本文对您有所帮助。

在Twitter上联系: stefanofrosoni