1> 什么是xib? xib能做什么?
* 用来描述软件界面的文件。
* 如果没有xib,所有的界面都需要通过代码来手动创建。
* 有了xib以后,可以在xib中进行可视化开发,然后加载xib文件的时候,系统自动生成对应的代码来创建界面。
* 与xib类似的还有storyboard文件。
2> xib与storyboard既然都是描述软件界面的,有什么区别吗?
* xib是轻量级的,一般只用来描述一个界面中的某部分内容(用来描述局部UI界面)。
* storyboard是重量级的,一般用来描述软件的多个界面, 以及不同界面之间的跳转关系。
3> 加载xib的方式:
NSBundle *bundle = [NSBundle mainBundle];
[bundle loadNibNamed]
[bundle bundlePath] 查看mainBundle的路径。
4> 查找xib在手机模拟器中的位置。安装到手机上后就变成了nib文件了。
/Users/Steve/Library/Developer/CoreSimulator/Devices/0C63A035-071E-4EFC-8718-C387A3F7E026/data/Containers
NSString *home = NSHomeDirectory();
NSLog(@"%@", home);
8. 封装,自定义View。创建属性、传递Model进去。让xib文件的class 属性为 自创建的View(继承自UIView)
9. 封装创建View的代码,让用户不知道是通过xib创建的还是通过代码创建的。
* 封装一个类方法
11.xib文件的加载过程。
0> 根据路径, 搜索对应的xib文件(nib文件)
1> 加载xib文件的时候,会按顺序加载xib文件中的每个控件。
2> 对于每个控件,创建的时候都会查找对应的Class属性中配置的是那个类,那么就创建对应的类的对象。
3> 创建好某个控件以后,按照在xib中配置的属性的值,依次为对象的属性赋值。
4> 创建该控件下的子控件,并设置属性值。然后把该控件加到父控件中。
5> 最后返回一个数组,这个数组中包含创建的根元素对象。
12. 再次封装,在创建自定义View的时候把model传递进去。达到传递数据的作用。
Demo效果图如下所示:
大家可以参考如下的Demo代码,是传智博客的,以帮助大家理解与学习!