免费开源的iOS开发学习平台

UIWindow、UIView与UIViewController: 1-概念简介

UIWindow、UIView、UIViewController是与界面显示以及转换相关的类,在实际的学习过程中,初学者比较容易混淆,本节以着重介绍三者的联系以及区别。

UIWindow(窗口)

UIWindow是一个特殊的UIView,UIWindow类继承自UIView。一般来说,一个App只有一个UIWindow,但特定情况下也会出现多个UIWindow,例如,键盘弹出的情况下,就会存在多个UIWindow。iOS启动完毕后,创建的第一个视图控件就是UIWindow,此时需要给UIWindow对象指定根控制器,即设置rootViewController属性,系统会自动把rootViewController的view添加到window上,从而在屏幕上就可以显示出程序启动后的初始界面。rootViewcontroller是应用程序的根控制器,只要App未被销毁,则rootViewcontroller就不会被销毁。

UIView(视图)

每个UIView都负责在屏幕上一个特定矩形区域的显示,我们可以通过设置backgroundColor属性来查看该矩形区域的范围。每个UIView对象除了要负责渲染视图矩形区域内的内容之外,还要响应该区域中发生的用户交互事件,因为UIView继承自UIResponder类,并且每个UIView对象中都可以添加一个或多个子UIView对象。UIView对象只有显示在UIWindow上,用户才能看到界面的样式。通过UIView类的window属性,可以获得该UIView对象所在的UIWindow对象。

UIViewController-视图控制器

每个UIViewController都有一个view属性,用于显示该控制器的外观样式。UIViewController类负责管理在view上显示的数据,并协调它们和应用程序其他部分的关系。UIViewController类负责创建其管理的视图,并且在内存不足时,将它们从内容中移出,可以在didReceiveMemoryWarning方法中实现。除此之外,视图控制器还为某些标准的系统行为提供自动响应。例如,在设备方向变化时,如果应用程序支持该方向,视图控制器可以对其管理的视图进行尺寸调整,使其适应新的方向。