1.xib与storyBoard区别
Xib是轻量级的,用来描述局部的UI界面
Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系
2.Xib的加载方式
方式一:通过mainBundel loadNibNamed:加载
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
方式二:通过UINib nibWithNibName加载
UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
3.通过xib创建自定义控件步骤
1)新建一个继承UIView的类
2)新建一个xib文件(xib的文件名最好跟控件类名一样)
3)添加子控件、设置子控件属性
4)修改最外面那个控件的class为控件类名
5)将子控件进行连线
6)提供模型属性,重写模型的set方法
7)在set方法中给子控件设置数据
4.initWithcoder、awakeFromNib与layoutSubviews
1)initWithcoder
1.1 只要是从storyboard/xib中加载就会调用这个方法;
1.2 这个方法一般是初始化的操作;
1.3 在init方法内只管控件内部的创建,但不管frame的初始化,因为外界调用的init方法不一定马上给frame赋值,所以第一次init是frame的值可能为nil;
2)awakeFromNib
storyboard/xib中加载完毕的时候调用,想做一些在xib加载完毕的操作,就在这个方法中操作(建议在这个方法中写初始化代码)
3)layoutSubviews
重写系统的-(void)layoutSubviews方法,这个方法方法专门用来布局子控件,一般在这里设置子控件的frame,当控件本身的尺寸发生改变的时候,系统会自动调用这个方法。重写此方法内一定要调用[super layoutSubviews]