iOS

xib使用

xib简介

xib用来描述软件界面,它用Interface Builder工具来编辑。
本文主要介绍使用xib的一些技术,即在xib中布局UI,然后xib与code相结合,快速UI开发介绍。本文主要讲解的也就是加载xib的技术。

xib创建

与文件同步创建

已有文件单独创建xib

xib使用

1、是否选择autolayout

如果要用autolayout则勾选下图中的红框,不勾选则使用autoresize

2、针对某一项单独禁用autolayout

如果使用autolayout,但又想对某一控件禁用autolayout,则只需加入如下代码即可:
[self.locationLabel setTranslatesAutoresizingMaskIntoConstraints:YES];
此地的self.locationLabel即为你想禁用的控件。
特别注意:启用autolayout,则代码中所有设置frame的代码都是无用的,如果要单独设置frame则需禁用该控件的autolayout。

3、xib关联

如果是容器,如:viewController,则File’s Owner中的Custom Class中的Class必须关联到对应的viewController类。
如果是单纯控件,如:view,button等,则view中的Custom Class中的Class不用关联。

对于代码中需要进行操作的变量定义时需要在前部加上
IBOutlet
定义完成后,需要进行关联。选中要关联的项,拖动,具体如下图所示

如果是容器则拖动到File’s Owner,如果是其他的则拖动到view

4、xib约束

如果是autolayout,则可以添加相对约束,所添加的约束都是相对于它最近的view,添加约束方式如下图:

如果是autoresize,添加的约束只相对于它的superview,添加约束方式如下图:

特别注意:启用autolayout,如果添加约束,则最好所有的项目都添加约束,以免造成页面排版错乱。

5、调用xib

如果是容器类xib,则只需正常的init就可以。
如果是非容器类xib,则调用方法如下
HomeIconView \iconView = [[[NSBundle mainBundle] loadNibNamed:@”HomeIconView” owner:self options:nil] lastObject];*
此处的@”HomeIconView”即为你创建的xib名。

总结

优点

使用xib,可以减少代码量。
autolayout和autoresize配合可以方便的解决屏幕适配问题。

缺点

使用xib,frame不能定义成0.5。
autolayout加约束时,尽量要都加,不然会出现各种排班问题。
控件叠控件不能实现,例如:button上不能再加其它控件。
定义好的frame,有时候会自己变成0,具体原因不明。