xib加载原理
首先查看Xib中的UIView对应的类,然后用对应的类创建对象(调用的是initWithCoder方法),然后查看其属性进行设置,比如frame,backgroundcolor等
- 然后UIView中可能有多个子控件,比如有UIImageView,UILabel,...
- 那么就对每一个控件从上到下,依次根据控件所对应的类来创建(调用的是initWithCoder方法)与之相对应的对象,然后对创建的对象根据其相应的的属性进一步赋值,比如frame.backgroundcolor等
- 至此,xib加载完毕
- Storyboard的前身是Xib,所以Stroyboard中的UIView的加载过程跟上面的一样,每个子控件调用initWithCode方法创建对象,并且都会调用该控件对应的类的awakeFromNib方法
- (instancetype)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { NSLog(@"%s", __func__); } return self; } - (void)awakeFromNib { [super awakeFromNib]; NSLog(@"%s", __func__); }