用一句话概括,就是:在iOS应用运行中,屏幕中显示的内容是一组一组的视图对象,他们负责显示屏幕中的内容,而在视图的后面是UIViewController视图控制器,它的作用是管理哪些视图中显示的内容,并协调他们和应用其他部分的关系。
但是这么说还是有些抽象,因为一些具体问题并未得到解决,比如说:如何知道我这个视图控制器控制的是哪些视图?“控制”究竟指的是什么?是事无巨细的管理着视图的内容和显示方式,还是说只需要管理视图的加载到消失整个流程即可?
下面来仔细的看一下:
在一个复杂的iOS应用中, 往往包含多个屏幕的内容,使用UIViewController可以方便管理众多的内容。
UIViewController类负责创建其管理的视图,并在内存较低的时候讲他们从内容中移除。
UIViewController可以通过视图控制器来将新的视图内容,以模态窗口的方式显示在当前视图的上方。
视图控制器可以响应设备的方向变化,对视图进行相应的调整,以适应屏幕的新方向。
一些特殊的视图控制器,如导航视图控制器、标签视图控制器,可使视图的管理更加方便和规范。
视图控制器的生命周期:
alloc
创建一个视图控制器对象,并分配内存空间。
init()
对视图控制器对象进行初始化。
loadView
如果从storyboard创建视图,则从storyboard中加载视图。
viewDidLoad
视图加入完成,可以进行一些自定义操作
viewWillAppear
视图即将要展示在屏幕上。
viewDidAppear
视图已经站在屏幕上显示并完成渲染。
viewWillLayoutSubviews
视图即将布局其子视图
viewDidLayoutSubviews
视图已经完成子视图的布局
viewWillDisappear
视图即将从屏幕中消失
viewDidDisappear
视图已经从屏幕上消失
dealloc
视图被销毁