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

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

【问题讨论】:

    标签: swift xcode uiview interface-builder xib


    【解决方案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

    【讨论】:

    • 感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多