Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift下自定义xib添加到Storyboard大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://www.voidcn.com/article/p-vcfowvhx-vb.html 我们使用Storyboard布局的时候,很多子单元页面会独立到xib布局中,那么这个xib如何添加到storyboard中呢?下面我们看看Swift下怎么操作。 一、准备工作 新建Xcode工程 新建一个UIVi

猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢! @H_489_16@ 原文地址: http://code.js-code.com/article/p-vcfowvhx-vb.html

我们使用Storyboard布局的时候,很多子单元页面会独立到xib布局中,那么这个xib如何添加到storyboard中呢?下面我们看看Swift下怎么操作。

一、准备工作

  1. 新建Xcode工程
  2. 新建一个UIView:MyView.swift 集成自UIView
  3. 新建一个UIView的xib布局文件:MyView.xib @H_489_16@ 这个是我MyView.xib内容: @H_489_16@

二、互相关联MyView.xib与MyView.swift

xib关联到MyView.swift

  1. 设置MyView.xib的File’s owner 的Custom Class为MyView
  2. 注意:不要@L_913_7@myView.xib下View的Custom Class,保存其为认的UIView。 @H_489_16@
@H_151_43@myView.swift设置
  1. 将MyView.xib下的View拖拽到MyView.swift中关联IBOutlet属性变量:view
@IBOutlet var view: UIView!
  1. 添加初始化代码在MyView.swift中:
required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        // app 运行后从storyboard加载
        NSBundle.mainBundle().loadNibNamed(
            String(MyView),owner: self,options: nil
            )[0] as! UIView
        self.addSubview(view)
        view.frame = self.bounds

        self.setup()
    }

    func setup() {
        // init code ...
    }

三、@L_403_2@myView.xib到Main.storyboard

  1. 拖拽一个UIView到Main.storyboard中,设置该UIView的Custom Class为MyView,添加一下布局约束。 @H_489_16@

OK,现在运行Xcode,是不是看到app运行后,自己的xib已经出来了。

@H_404_92@四、让Xcode下Main.storyboard中预览xib

细心的朋友注意到了,Main.storyboard中没有刷新xib视图,只能运行后才能看到,下面我们让Main.storyboard中也能预览xib。 @H_489_16@ 1. 添加@IBDesignable属性 @H_489_16@ 2. @L_403_2@main.storyboard下xib初始化方法 @H_489_16@ 3. 注意: @H_489_16@ - Xcode非运行状态下storyboard加载xib使用NSBundle.mainBundle().loadNibNamed会出现找不到xib文件错误。 @H_489_16@ - xib加载后,需要设置其frame大小,不然frame会是xib中的大小。 @H_489_16@ - 每次选中storyboard,都会自动Build一次来刷新其中xib视图,如果过程中出现错误信息可以直接Xcode下查看,如果出现Crash错误,Xcode下不会显示,此时去查看下面的crash文件来帮助你定位问题。 @H_489_16@ @H_489_16@ ~/Library/Logs/DiagnosticReports/IBDesignablesxxxxxxx.crash @H_489_16@ @H_489_16@ 下面是完整MyView.swift

import UIKit

@IBDesignable class MyView: UIView {

    @IBOutlet var view: UIView!

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        // app 运行后从storyboard加载
        NSBundle.mainBundle().loadNibNamed(
            String(MyView),options: nil
            )[0] as! UIView
        self.addSubview(view)
        view.frame = self.bounds

        self.setup()
    }

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

        // Xcode中storyboard预览加载
        NSBundle(forClass: MyView.self).loadNibNamed(
            String(MyView),options: nil
            )[0] as! UIView
        self.addSubview(view)
        view.frame = self.bounds

        self.setup()
    }

    func setup() {
        // init code ...
    }

    @IBACtion func tapped(sender: AnyObject) {
        print("tappd")
    }
}

效果图: @H_489_16@

大佬总结

以上是大佬教程为你收集整理的Swift下自定义xib添加到Storyboard全部内容,希望文章能够帮你解决Swift下自定义xib添加到Storyboard所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。