Swift下自定义xib添加到Storyboard

Swift下自定义xib添加到Storyboard,第1张

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

猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!
原文地址: http://www.jb51.cc/article/p-vcfowvhx-vb.html

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

一、准备工作 新建Xcode工程 新建一个UIVIEw:MyVIEw.swift 集成自UIVIEw 新建一个UIVIEw的xib布局文件:MyVIEw.xib
这个是我MyVIEw.xib内容:
二、互相关联MyVIEw.xib与MyVIEw.swift xib关联到MyVIEw.swift 设置MyVIEw.xib的file’s Owner 的Custom Class为MyVIEw 注意:不要修改MyVIEw.xib下VIEw的Custom Class,保存其为默认的UIVIEw。
MyVIEw.swift设置 将MyVIEw.xib下的VIEw拖拽到MyVIEw.swift中关联IBOutlet属性变量:vIEw
@IBOutlet var vIEw: UIVIEw!
添加初始化代码在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 ...    }
三、添加MyVIEw.xib到Main.storyboard 拖拽一个UIVIEw到Main.storyboard中,设置该UIVIEw的Custom Class为MyVIEw,添加一下布局约束。

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

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

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

~/library/Logs/DiagnosticReports/IBDesignablesxxxxxxx.crash

下面是完整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")    }}

效果图:

总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1075218.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存