Xib和storyboard对比
共同点:
都用来描述软件界面
都用Interface Builder工具来编辑
本质都是转换成代码去创建控件不同点
Xib是轻量级的,用来描述局部的UI界面
Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系
Xib的加载
- 方法1
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
-方法2
UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
使用xib自定义view的步骤
-
新建自定义控件类
- 新建xib文件(文件名建议和view的类名一致)
使用xib自定义view的步骤
-
修改xib中view的类名
封装xib的加载过程
@interface ShopView()
@property (weak, nonatomic) IBOutlet UIImageView *shopImageView;
@property (weak, nonatomic) IBOutlet UILabel *shopNameLabel;
@end
@implementation ShopView
- (void)awakeFromNib{
[super awakeFromNib];
self.backgroundColor = [UIColor orangeColor];
}
- 增加模型属性,在模型属性set方法中设置数据到子控件上
注意点
一个控件有2种创建方式
通过代码创建
初始化时一定会调用initWithFrame:方法通过xib\storyboard创建
初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
初始化完毕后会调用awakeFromNib方法有时候希望在控件初始化时做一些初始化操作,比如添加子控件、设置基本属性
这时需要根据控件的创建方式,来选择在initWithFrame:、initWithCoder:、awakeFromNib的哪个方法中操作