View生命
1. View的生命周期:
当第一次加载到内存:
加载view(loadView)-->view加载完毕(viewDidLoad)
当加载完成后开始展示布局:
控制器View将要显示(viewWillAppear)-->控制器View将要布局控件(viewWillLayoutSubViews)-->控制器view完成布局控件(viewDidLayoutSubviews)-->view已经显示(viewDidAppear)-->view即将消失(viewWillDisappear)-->view完全消失(viewDidDisappear)
2.View的加载:
View属性被访问时,
如果存在-------->
返回View
如果不存在-------->
loadView----->有自定义方法生成view,生成view
----->没有自定义生成的view,通过xib和Story创建,得到View
----->如果都没,返回empty View
3.view的布局,UIView通过layoutSubViews方法进行处理的
需要注意的时layoutSubViews方法由系统来调用,不能程序员来调用。可以调用setNeedsLayout方法进行标记,以保证在UI下个刷屏系统中会调用layoutSubviews。或者layoutIfNedded直接请求系统调用layoutIfNeeded直接请求系统调用layoutSubviews。
layoutSubViews的被调用时机:
1.addSubView会触发layoutSubviews,比如ivewA add ViewB,第一次添加A和B的layoutSubviews都会被调用,而第二次( viewA 已经有了viewB)只调用viewB的。
2.view的frame改变会触发layoutSubViews。
3.滚动一个UIScrollView会触发layoutSubviews。
4.旋转Screen会触发UIView的layoutSubviews。
5.改变transform属性时,当然frame也会变。
6.处于key window的UIView才会被调用( 程序同一时间只有一个window为keyWindow,可以简单理解为显示在最前面的window的keywindow)