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;
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。