【发布时间】:2018-04-11 13:52:39
【问题描述】:
我已经将 UIView 设计为带有类的 XIB。 我可以像其他 UIView 一样使用这个 xib 吗? 所以,我想在应用程序的不同部分使用它之后创建这个 UIView。
【问题讨论】:
标签: swift xcode uiview interface-builder xib
我已经将 UIView 设计为带有类的 XIB。 我可以像其他 UIView 一样使用这个 xib 吗? 所以,我想在应用程序的不同部分使用它之后创建这个 UIView。
【问题讨论】:
标签: swift xcode uiview interface-builder xib
是的,你可以。
创建 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
【讨论】:
是的,您可以随心所欲地在任何地方实例化它:
显示如何实例化为视图的答案:How to initialize/instantiate a custom UIView class with a XIB file in Swift
显示如何将 UITableView 或 UICollectionView 实例化为可重用单元格的答案:Custom UITableViewCell from nib in Swift
【讨论】: