好吧,本来作为一个代码的强烈爱好者,使用Xib我是拒绝的。在屏幕适配和UI搭建的压力下,学习了Xib.在此感谢帮助过我学习Xib的朋友们!!!
Xib可以在User Interface里面创建:
你可以创建你的 自定义view,或者干脆创建一个空的Empty.创建view,在控制器中加载它还比较麻烦,需要使用nib文件进行加载,用的比较多的地方就是你自定义弹出框,或 者在严格的MVC模式下分出来的view使用。如何加载UIView的Xib文件,网上有很多教程,大概步骤是这样的。代码创建一个类继承自UIView,然后在上图中选择 View创建Xib文件,创建好Xib文件之后,在Xib文件的Custom Class选项下的 class中填写你代码创建的继承自UIView的类名,这样你的view 的Xib文件与代码的view类相互关联了起来。在你的控制器里面用代码初始化这个view,设置它的大小。加载nib文件的方法例子(网上很多啦):
_customView = [[[NSBundlemainBundle]loadNibNamed:@"CustomView"owner:niloptions:nil]firstObject];
红色为你的Xib文件名。2.工程中使用最多的方式:你可以在创建你的控制器的时候,顺带创建本控制器的Xib文件,它就自动与你的控制器进行了联动关联。不仅仅是控制器,你创建自定义表格视图的单元格的类的时候,也可以将本类的Xib文件创建了:
Also create XIB file ,勾选这个选项,会自动生成与当前类关联的Xib文件,你在里面拖入空间,控制器会自动加载出来,你不用管,除非你想操作里面的控件,使用分屏拖入即可:
在拖入表格视图等重要控件的时候不要忘记在Xib文件中的 dataSource和delegate进行关联,不然会出现控件在控制器中加载不出来的情况,鼠标点击表格视图,按住controller 键,往FilesOwner拖,就会出现如图:
选择数据源与代理,就可以将表格视图加载出来。
4.原生的Xib文件的尺寸比较大,你可以在这里选择设置:
注意右边的选项,你就可以选择当前view的大小,不过我一般还是选择原生的~~
5.我们在自定义单元格的时候,也要使用nib的方法,将自定义单元格的那个Xib 文件给加载进来,表格视图才会显示你所定义的单元格的风格那样。但是在单元格重用的cellforrowatindexpath方法里面,单元格风格的选择还是和纯代码的一样。好,比如我们已经将表格视图在控制器中拖好,自定义单元格的Xib文件也已经搞定,现在要加载这个自定义单元格的表格视图。我们在控制器的viewDidLoad方法中写如下代码:
[_TestTableViewregisterNib:[UINibnibWithNibName:@"TestTableViewCell"bundle:nil]forCellReuseIdentifier:kUImyCellIdentifier];
其中红色的名字就是自定义单元格的Xib文件名字。6.关于遇到的一个问题,我在按照别人的代码敲实现二维码的扫面功能的时候发现:二维码中间有有一个UIView,它用来执行你手机扫描的时候的扫描动画,我是用Xib拖的,在真机测试的时候发现,我用Xib拖的这个UIView不透明,无法看见中间这个view 后面的东西。回过头来发现,我朋友用的手写的UIView,就设置了个尺寸而已,我拖的也是什么也没干,我干脆在Xib中设置view背景颜色的选项里面选择clear color,视图就透明了。事后想想可能是因为在这个view加了layer层动画的原因,手写与Xib创建的视图会有一些默认设置不一样?待后来解决。
Xib属于轻量级的UI 搭建,我在我参与团队合作朋友们的代码中发现,他们都大量使用Xib进行UI搭建,而都没有采用故事版,他们说故事板谁用谁知道~~~~~
Xib创建好后要使用自动布局进行屏幕适配,请看我的另外一篇使用Xib与自动布局
希望自己不要忘记,也希望可以帮助到别人。