我可以使用 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