一,本质
xib本质是XML
代码(在编译时Xcode
将xib
中内容转换成代码)
注:如果一个view
是从xib
中加载出来的,默认width
与height
是xib
中描述的尺寸,frame中(x,y)值默认为零
二、控制器中加载xib
加载方式一:
NSArray *newsArr = [[NSBundle mainBundle] loadNibNamed:@"news" owner:nil options:nil];
UIView *newsView = newsArr.firstObject;
注:
“loadNibNamed:owner:options
” 方法返回值是一个NSArray
,因为一个xib中可以放多个view
,但一般情况我们都只放一个在xib
中
加载方式二:
UINib *nib = [UINib nibWithNibName:@"news" bundle:[NSBundle mainBundle]];//[NSBundle mainBundle]作为参数时,可以传nil,切记[NSBundle mainBundle]调用其他方法时不可以为nil,用nil调用方法等于什么操作都没做
UIView *news = [[nib instantiateWithOwner:nil options:nil] firstObject];
三、使用xib加载view的注意事项
1,如果一个view
是从xib
加载出来的,那么xib
绑定的View
初始化过程中,不会执行init
方法和initWithFrame
方法,因此在页面中如果通过 alloc init
来初始化该view
,界面会是空白
2,如果多个页面中用到该view
,最好在xib
绑定的类中提供快速创建的类方法