我可以使用 UIView(.xib 和类)作为许多视图的视图基础示例吗?

Posted

技术标签:

【中文标题】我可以使用 UIView(.xib 和类)作为许多视图的视图基础示例吗?【英文标题】:Can I use UIView (.xib and class) as view base example for many view? 【发布时间】:2018-04-11 13:52:39 【问题描述】:

我已经将 UIView 设计为带有类的 XIB。 我可以像其他 UIView 一样使用这个 xib 吗? 所以,我想在应用程序的不同部分使用它之后创建这个 UIView。

【问题讨论】:

【参考方案1】:

是的,你可以。

创建 XIB 后,创建一个 UIView 类,将该类分配给 XIB 的文件所有者。创建整个 XIB 容器视图的 IBOutlet 将其附加到 UIView 类,将其称为 containerView 之类的东西

在您的 XIB 的自定义类中添加以下内容:

override init(frame: CGRect) 
super.init(frame: frame)

customInit()



func customInit() 

Bundle.main.loadNibNamed("YourNIBName", owner: self, options: nil)
addSubview(containerView)
containerView.autoresizingMask = [.flexibleHeigh, .flexibleWidth]



现在在您的任何 ViewController 上:

let view = CustomNib(frame: CGRect(x: 0, y:0, width: 150, height: 150)

self.view.addSubview(view)

您也可以通过情节提要创建它,只需将自定义 xib 类分配给任何 UIView。

这是一个很好的资源,也可以提供帮助:Swift 3 — Creating a custom view from a xib

【讨论】:

谢谢!我喜欢这样的一些代码,但只针对一个视图,并且不想在对许多视图一无所知的情况下这样做。 不客气。这非常适合在您的任何应用程序视图控制器中重用它,只需几行以编程方式添加,无需通过情节提要添加它。【参考方案2】:

是的,您可以随心所欲地在任何地方实例化它:

显示如何实例化为视图的答案:How to initialize/instantiate a custom UIView class with a XIB file in Swift

显示如何将 UITableView 或 UICollectionView 实例化为可重用单元格的答案:Custom UITableViewCell from nib in Swift

【讨论】:

感谢您的回答!

以上是关于我可以使用 UIView(.xib 和类)作为许多视图的视图基础示例吗?的主要内容,如果未能解决你的问题,请参考以下文章

多次使用 UIView(使用 xib 创建)作为同一视图的子视图

在 .xib 中使用自定义 UIView 作为 IBOutlet

许多子类的一个 XIB 视图

如何将 UITableView 作为子视图添加到 xib 中的 UIView?

从 XIB 创建新的 UIView 对象

从 XIB 文件中为 ViewController 视图加载自定义 UIView