一.先对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.层级可以进行加减的
加减的效果
最后感谢您的阅读,记得点击喜欢哦!!!