1. 程式人生 > >UIWindow、UIView以及CALayer之間的關係

UIWindow、UIView以及CALayer之間的關係

UIWindow

1.簡介

UIWindow是一種特殊的UIView,通常在一個app中只會有一個UIWindow

2.作用

a.包含程式所有要顯示的檢視;

b.傳遞手勢訊息到其它的UIView物件或者其它物件;

c.與UIViewController一起處理螢幕旋轉。

3.初始化

a.使用storyboard

如果為應用程式建立了一個storyboard,並在info.plist中將其指定為main storyboard,那麼在應用程式啟動的時,iOS會自動幫程式設計師做這樣幾件事情:
1).例項化一個window;
2).載入main storyboard,並且例項化其中的root view controller;

3).將這個view controller賦值給window.rootViewController,並顯示這個window。

b.使用nib檔案

如果使用nib檔案的話。將一個window物件拖拽到Interface Builder檔案中,並將其指定為應用程式的main interface。那麼在app啟動的時候,iOS也會自動建立window物件。但是為了確保window的大小與螢幕大小一致,需將Interface Builder中對window物件中的Full Screen at Launch這個屬性勾選。

c.純程式碼

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    //建立window
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    //為window設定背景顏色
    self.window.backgroundColor = [UIColor whiteColor];
    //將該window設定成主檢視並顯示
    [self.window makeKeyAndVisible];
    
    return YES;
}

UIView

1.簡介

UIView表示螢幕上的一塊矩形區域,它幾乎事IOS中所有視覺化控制元件的父類。

2.作用

1).管理矩形區域裡的內容

2).處理矩形區域中的事件

3).子檢視的管理

4).還能實現動畫

3.初始化

UIView *someView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    [self.view addSubview:someView];

CALayer

1.簡介

UIView之所以能顯示在螢幕上,是因為它內部的一個圖層,即CALayer物件。在建立UIView物件時,UIView內部會自動建立一個圖層(CALayer物件),當UIView需要顯示在螢幕上的時候,會呼叫drawRect:方法進行繪圖,並且會將所有內容繪製到自己的圖層上,繪圖完畢後,系統會將圖層拷貝到螢幕上,這樣完成UIView的顯示。

2.作用

主要負責UIViewde的檢視繪製。

UIWindow、UIView、CALayer三者的關係總結

UIView是用來顯示內容的,可以進行處理使用者事件

CALayer是用來繪製內容的,對內容進行動畫處理依賴與UIView來進行顯示,不能處理使用者事件

UIwindow是UIView的子類,UIWindow的主要作用:一是提供一個區域來顯示UIView,二是將事件的分發給UIView,一個應用基本上只有一個UIWindow