- 继承自NSObject
- xib最终会转变成nib文件
- 共同点:
- 都用来描述软件界面
- 都用Interface Builder工具来编辑
- 本质都是转换成代码去创建控件
- 包括创建控件,加入视图中,设置frame等基本属性,拖线等功能
- 不同点
- Xib是轻量级的,用来描述局部的UI界面
- Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系
xib加载控件
- 方法一:loadNibNamed
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
- 注意:上述方式取出的都是xib中控件数组,需要根据角标获取对应控件
- [views firstObject],取出数组中的第一个元素,加载后的xib取出的是整个父控件。
- [views lastObject],取出数组中的最后一个元素,加载后的xib若只有一个父控件(子控件不算),也能取出父控件,否则不是取出父控件。
xib加载控制器
自动拉伸问题
- 从xib中加载进来的控件的autoresizingMask属性值默认是
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
UINib的其他方法
// bundleOrNil若为nil,则默认是mainBundle
+ (UINib *)nibWithData:(NSData *)data bundle:(nullable NSBundle *)bundleOrNil;