UIWindow的講述以及底層

分類:技術 時間:2016-10-24

一.先對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


ads
ads

相關文章
ads

相關文章

ad