一.先对UIWindow做一个简单的介绍
- 1.
UIWindow
是一种特殊的UIView
,通常在一个app
中至少会有一个UIWindow
- 2.
iOS
程序启动完毕后,创建的第一个视图空间就是UIWindow
,接着创建控制器的view
,最后将控制器的view
添加到UIWindow
上,于是控制器的view
就显示在屏幕上了 - 3.一个
iOS
程序之所以能显示到屏幕上,完全是因为它有UIWindow
- 4.也就是说没有
UIWindow
,就看不见任何UI
界面
二.简述一下UIWindow在AppDelegate里面底层的实现
//加载info.plist,并且做出判断,判断有没有main,就不会帮你创建窗口,自己动手创建 //程序启动完成时的调用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /* 窗口现实的注意点 * 1.不要让窗口销毁,需要弄一个强引用 * 2.必须要设置窗口的尺寸 * */ //1.创建窗口对象 self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; //2.创建窗对象的根控制器并且赋值 //苹果推荐使用根控制器的原因,对应界面的事情交给对应的控制器去管理,一旦设置了窗口的根控制器,就会把控制器的view添加到窗口 self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[ViewController new]]; //3.显示窗口 [self.window makeKeyAndVisible]; return YES; }
- 1.先解释一下为什么用根控制器而不选择addSubview
它可以使屏幕具有旋转的功能
- 2.解释[self.window makeKeyAndVisible];
它的作用:
1. 可以显示窗口 self.window.hidden = NO 2. 成为主窗口 application.keyWindow = self.window;
** 三.对UIWindow的补充:哪些平常见的是窗口???
- 1.状态栏是一个比较特殊的窗口
- 2.键盘也是一个窗口
- 3.打印所有的窗口(以数组的形式展示)
NSLog(@"打印所有窗口%@",application.windows);
四.UIWindow的层级表示以及设置
- 1.层级越高就越在最上面,键盘的层级比较高
- 2.窗口层级的设置(自己你可以设置几个Window)
(1).UIWindowLevelNormal(默认)
(2).UIWindowLevelAlert,
(3).UIWindowLevelStatusBar
层级顺序
UIWindowLevelAlert
> UIWindowLevelStatusBar
> UIWindowLevelNormal
层级的设置
self.window.windowLevel = UIWindowLevelAlert;
- 3.层级可以进行加减的
加减的效果
最后感谢您的阅读,记得点击喜欢哦!!!