UIWindow
最常用的方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 1.创建 UIWindow 实例。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 2.指定 UIWindow 对象的根视图控制器。
ViewController *viewController = [[ViewController alloc] init];
self.window.rootViewController = viewController;
// 3.设置背景色。
self.window.backgroundColor = [UIColor whiteColor];
// 4.设置 UIWindow 实例为主窗口并使其可见。
[self.window makeKeyAndVisible];
return YES;
}
- UIWindow 对象提供了一个方法
setRootViewController
将视图控制器的视图层次结构加入应用窗口。当程序将某个视图控制器设置为 UIWindow 对象的rootViewControl
时,UIWindow 对象会将该视图控制器的 view 作为子视图加入窗口,同时负责维护 viewController 和 view 对应的生命周期。此外,还会自动调整 view 的大小,将其设置为与窗口的大小相同。 rootViewControl
的 view 需要在应用启动完毕之后就显示,所以 UIWindow 对象会在设置完rootViewControl
后立刻加载其 view。
UIWindow** 的主要作用:
- 作为 UIView 的最顶层容器;包含应用显示所需要的所有 UIVIew;
- 传递触摸消息和键盘事件给 UIView;
WindowLevel
UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal; // 层级:0
UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert; // 层级:1000
UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar __TVOS_PROHIBITED; // 层级:2000
参考
- 《iOS 开发进阶》唐巧
- 天才第一步,从 UIWindow 谈起 @吴白