UI的生命周期

1.viewDidload()

执行完此方法,会加载完controller的view的相关资源,只调用一次;UICotrol的方法

- (void)viewDidload

2.alloc

UI控件的创建,分配一定的内存;创建控件的时候调用一次;NSObject的类方法

同时每次也会调用一次:+ (instancetype)allocWithZone:方法

+(instancetype)alloc

3.init

初始化一个程序,NSObject的对象方法;应用场景:自定义控件,会重写此方法;

代码定义控件:在方法中加载子控件,返回self;

xib自定义控件:写此方法,拿到xib的view

-(instancetype)init

4.initWithFrame

设置控件的尺寸大小;init同时给对象设置尺寸的时候调用;只调用一次

当调用init方法,会自动调用此方法,初始化控件的尺寸大小

-(CGRect)initWithFrame:( CGRect)frame

5.setFrame

控件显示出来后;set方法不解释;给控件设置尺寸大小使用;调用一次

创建控件显示到view之前,set方法会在init中自动调用一次;然后执行init方法;

- (void)setFrame:(CGRect)frame


6.layoutSubviews

当控件在view显示后,  尺寸值改变会调用; 当控件尺寸大小一次,调用一次

当控件在view显示前,调用创建对象时候,在 -(void)viewWillAppear(后续会介绍) 中会自动调用这个方法;

⚠:当在xib或者storyboard定义的控件,当有autolayout,创建的控件会根据auto layout调会原尺寸;之后显示在view上        

- (void)layoutsubviews

7.viewWillAppear

view即将显示的时候会调用:

当你添加[self.view1 addsubview:view]此方法,告诉要控制器要显示view;

说明此时才会调用viewWillAppear这个方法;,UIControl对象方法

(上述layoutsubview):此时会调用layoutsubviews方法;如有有约束,按默认的约束显示;

- (void)viewWillAppear


8.viewDidAppear

此时控件已经显示在view上了,UICotrol的对象方法

-(view)viewDidAppear

9.代码方式自定义控件:

init控件或者自定义init方法;用init方法创建控件,同时自动调用set方法,initframe方法


10.xib方法自定义控件;

会自动调用这都会两个方法,只调用一次

- (instancetype)initWithCoder:(NSCoder *)aDecoder

- (void)awakeFromNib

当xib创建的控件有子控件,想通过外界view的frame对子控件设置frame

会以xib的尺寸显示;原子控件的frame;若像修改,在layout后面自定义frame- (void)layoutSubviews

{

[super layoutSubviews];

self.scroll.frame = self.bounds;

}

11.viewWillDisappear

view从UIWindow上即将消失,但是view还在;一般是作用于控制器的界面在切换的时候;

- (void)viewDidDisappear:(BOOL)animated

12.viewDidDisappear

view从uiwindow上已经消失,但是view还在;

- (void)viewDidAppear:(BOOL)animated


13.viewWillUnload

当接受到内存警告,会调用此方法;销毁没有使用的view

- (void)viewWillUnload


14.viewDidIUnload

当控制器的view被销毁,不存的时候调用

- (void)viewDidUnload

推荐阅读更多精彩内容