在很多時候,都會筆試或者面試問到這個問題,其=自己總結了一下,可能其實和其他說的大同小異,但是結構要清晰。
一、UIWindow和UIView和CALayer的聯(lián)系和區(qū)別;
//喜歡的點個??????????????????????????????,關注成為粉絲吧。
1.UIWindow:
其實先說一下UIWindow,它在整個app當中只有一個UIWindow;
主要作用就是:提供一個區(qū)域用來顯示UIView;將事件分發(fā)給UIView;與UIViewController一起處理屏幕的旋轉事件。
2.接下來,當然就是常用到的UIView和CALayer;
UIView的繼承結構為:UIResponder:NSObject
所屬的框架是:/System/Library/Frameworks/UIKit.framework。UIKit主要是用來構建用戶界面的,并且可以響應事件。
當然對于UIView,側重于對內容的顯示管理;其實是相對于CALayer的高層封裝。
3.CALayer
其實就是一個圖層,UIView之所以能顯示在屏幕上,主要是它內部有一個CALayer對象。在創(chuàng)建UIView時,它內部會自動創(chuàng)建一個圖層,當UIView需要顯示在屏幕上的時候,會調用drawRect:方法進行繪圖,并且會將所有內容繪制到自己的圖層上,繪圖完畢后,系統(tǒng)會將圖層拷貝到屏幕上,這樣完成UIView的顯示。
CALayer的繼承結構:NSObject
也就是直接繼承NSObject,而不能夠響應事件。
所屬的框架:/System/Library/Frameworks/QuartzCore.framework;
總結一下:(可能不太恰當,自己面試或者傳授的時候,進行整理可以)
UIWindow、UIView、CALayer三者的關系
UIWindow:是UIView的子類,主要作用就是:提供一個區(qū)域來顯示UIView;事件的分發(fā)
UIView:用來顯示內容,可以進行用戶事件的處理;
CALayer:用來繪制內容的,對內容進行動畫處理,在UIView上進行顯示,不能處理響應事件。
UIView和CALayer是相互依賴的關系。其實一切都可以從CALayer說起。
//喜歡的點個??????????????????????????????