一.先對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(@quot;打印所有窗口%@quot;,application.windows);
四.UIWindow的層級表示以及設置
- 1.層級越高就越在最上面, 鍵盤 的層級比較高
- 2.窗口層級的設置(自己你可以設置幾個Window)
(1).UIWindowLevelNormal(默認)
(2).UIWindowLevelAlert,
(3).UIWindowLevelStatusBar
層級順序
UIWindowLevelAlert
gt;UIWindowLevelStatusBar
gt;UIWindowLevelNormal
層級的設置self.window.windowLevel = UIWindowLevelAlert;
- 3.層級可以進行加減的
加減的效果
最后感謝您的閱讀,記得點擊喜歡哦!!!
Tags: iOS開發
文章來源:http://www.jianshu.com/p/2b74b50ac87c