一.先對(duì)UIWindow做一個(gè)簡(jiǎn)單的介紹
1.
UIWindow
是一種特殊的UIView
,通常在一個(gè)app
中至少會(huì)有一個(gè)UIWindow
2.
iOS
程序啟動(dòng)完畢后,創(chuàng)建的第一個(gè)視圖空間就是UIWindow
,接著創(chuàng)建控制器的view
,最后將控制器的view
添加到UIWindow
上,于是控制器的view
就顯示在屏幕上了3.一個(gè)
iOS
程序之所以能顯示到屏幕上,完全是因?yàn)樗?code>UIWindow4.也就是說(shuō)沒(méi)有
UIWindow
,就看不見(jiàn)任何UI
界面
二.簡(jiǎn)述一下UIWindow在AppDelegate里面底層的實(shí)現(xiàn)
//加載info.plist,并且做出判斷,判斷有沒(méi)有main,就不會(huì)幫你創(chuàng)建窗口,自己動(dòng)手創(chuàng)建
//程序啟動(dòng)完成時(shí)的調(diào)用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
/* 窗口現(xiàn)實(shí)的注意點(diǎn)
* 1.不要讓窗口銷毀,需要弄一個(gè)強(qiáng)引用
* 2.必須要設(shè)置窗口的尺寸
*
*/
//1.創(chuàng)建窗口對(duì)象
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
//2.創(chuàng)建窗對(duì)象的根控制器并且賦值
//蘋果推薦使用根控制器的原因,對(duì)應(yīng)界面的事情交給對(duì)應(yīng)的控制器去管理,一旦設(shè)置了窗口的根控制器,就會(huì)把控制器的view添加到窗口
self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[ViewController new]];
//3.顯示窗口
[self.window makeKeyAndVisible];
return YES;
}
-
1.先解釋一下為什么用根控制器而不選擇addSubview
它可以使屏幕具有旋轉(zhuǎn)的功能
2.解釋[self.window makeKeyAndVisible];
它的作用:
1. 可以顯示窗口 self.window.hidden = NO
2. 成為主窗口 application.keyWindow = self.window;
** 三.對(duì)UIWindow的補(bǔ)充:哪些平常見(jiàn)的是窗口???
1.狀態(tài)欄是一個(gè)比較特殊的窗口
2.鍵盤也是一個(gè)窗口
-
3.打印所有的窗口(以數(shù)組的形式展示)
NSLog(@"打印所有窗口%@",application.windows);
四.UIWindow的層級(jí)表示以及設(shè)置
- 1.層級(jí)越高就越在最上面,鍵盤的層級(jí)比較高
- 2.窗口層級(jí)的設(shè)置(自己你可以設(shè)置幾個(gè)Window)
(1).UIWindowLevelNormal(默認(rèn))
(2).UIWindowLevelAlert,
(3).UIWindowLevelStatusBar
層級(jí)順序
UIWindowLevelAlert
>UIWindowLevelStatusBar
>UIWindowLevelNormal
層級(jí)的設(shè)置
self.window.windowLevel = UIWindowLevelAlert; - 3.層級(jí)可以進(jìn)行加減的
加減的效果
最后感謝您的閱讀,記得點(diǎn)擊喜歡哦!!!