1. 什么是视图?
视图显示为手机上的一块矩形区域,管理该区域的所有屏幕显示,它是UIView或者UIView的子类。
视图既可以从xib生成,也可以用代码生成。
2. 窗口
窗口是UIWindow或者它的子类。
视图结构的顶层便是app的窗口。
窗口必须充满设备的屏幕,因此,必须设置窗口的frame为屏幕的bounds。
(稍后我会讲解frame和bounds的区别)
代码如下:
Objective-C
UIWindow* w = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
Swift(iOS 8)
let w = UIWindow(frame: UIScreen.mainScreen().bounds)
iOS9以后代码明显简化了,系统会默认将屏幕的bounds赋给窗口的frame
Swift(iOS 9)
let w = UIWindow()
窗口在app的整个生命周期中存在,为了达到这个目的,app的delegate class有一个强引用(strong retain)的属性叫做window,它永远不会被释放。
如何切换自定义的主视图?
通常的做法是我们把自定义的视图控制器赋给窗口的rootViewController属性。
最后再通过makeKeyAndVisible方法使视图可见。