1.控制器view的创建(空项目)
2.研究控制器view的加载,首先需要自定义控制器view,作为根控制器。
3.证明控制器的view是透明的: 直接通过alloc,init创建的控制器的view默认是透明的
4.通过storyboard加载的控制器view,和storyboard描述的一样。
5.重写控制器的loadView,不会去加载storyboard.
6.解释loadView方法
1> loadView作用:一般用来创建自定义的view
2> loadView什么时候调用:当控制器的view没有创建的时候,就会调用loadView
去创建控制器的view.
3> loadView使用注意:如果重写loadView里面没有创建控制器的view,就不能使
用self.view,会造成死循环。
7.通过xib加载控制器的view
1>取一个CZViewController123的xib描述控制器的view,通过这个xib加载控制器的view
2>取一个CZViewController的xib描述控制器的view,通过这个xib加载控制器的
view,不用告诉控制器去加载哪个xib,会自动去加载CZViewController这个xib。
3>取一个CZView的xib描述控制器的view,通过这个xib加载控制器的view,不用告
诉控制器去加载哪个xib,优先去加载CZView这个xib。
8.PPT演示LoadView的默认做法。
8.1>控制器View的决定权:重写LoadView>storyboard>nibName>xib
9.控制器的view是延迟加载的
9.1>验证控制器的view延迟加载,只有在窗口显示的时候,才会调用loadView
方法。
9.2>用到控制器view的时候才会加载控制器的view,设置控制器view的背景颜色
9.3>通过设置控制器view的颜色,引出两个疑问。
1>重写loadView,不是不会加载xib了吗,控制器的view由loadView决定,
loadView显示什么颜色,就是什么颜色。
2> loadView只是创建控制器View,并不能决定控制器的view的颜色。
3>理解loadView的调用时刻: 第一次调用self.view, 底层会调用LoadView
方法,创建控制器的view,这时候的view是LoadView的颜色,但是vc.view.backgroundColor,是拿控制器的view又设置一次颜色,把LoadView设置的颜色给覆盖了。
4>在viewDidLoad也设置颜色,还是vc.view.backgroundColor决定,因为vc.view就是获取控制器的view,只有控制器的view加载完成之后,才能获取
到,因此先调用viewDidLoad。
10.如何快速生成一个xib描述控制器的view,之前还要在xib拖视图,设置xib描述哪个
控制器,很麻烦。
1>定义新的控制器的时候,勾选xib,会自动搞一个xib描述控制器的view.
2>会自动生成一个和控制器同名的xib,并且里面设置好了。
学习方法:学习原理,不要一开始就用最快的方式创建xib,开发的时候才使用最快的方式。