UIWindow和UIView和 CALayer 的聯(lián)系和區(qū)別?

分類來看:

UIView是視圖的基類,

UIViewController是視圖控制器的基類,

UIResponder是表示一個可以在屏幕上響應觸摸事件的對象;

UIwindow:

UIwindow是UIView的子類,

UIWindow的主要作用:

一是提供一個區(qū)域來顯示UIView,二是將事件(event)的分發(fā)給UIView,一個應用基本上只有一個UIWindow.

萬物歸根,UIView和CALayer都是的老祖都是NSObjet??梢?UIResponder是用來響應事件的,也就是UIView可以響應用戶事件。

CALayer 和 UIView 的區(qū)別:

UIView的繼承結構為: UIResponder : NSObject。

CALayer的繼承結構為: NSObject??梢?UIResponder是用來響應事件的,也就是UIView可以響應用戶事件,CALayer直接從 NSObject繼承,因為缺少了UIResponder類,不能響應任何用戶事件

所屬框架,UIView是在 /System/Library/Frameworks/UIKit.framework中定義的,UIKit主要是用來構建用戶界面,并且是可以響應事件的。CALayer是在/System/Library/Frameworks/QuartzCore.framework定義的。而且CALayer作為一個低級的,可以承載繪制內(nèi)容的底層對象出現(xiàn)在該框架中

UIView相比CALayer最大區(qū)別是UIView可以響應用戶事件,而CALayer不可以。UIView側重于對顯示內(nèi)容的管理,CALayer側重于對內(nèi)容的繪制。UIView是基于CALayer的高層封裝。

總結:

UIView是用來顯示內(nèi)容的,可以處理用戶事件。

CALayer是用來繪制內(nèi)容的,對內(nèi)容進行動畫處理依賴與UIView來進行顯示,不能處理用戶事件。

為什么是兩套體系?

并不是兩套體系,UIView和CALayer是相互依賴的關系。UIView依賴與calayer提供的內(nèi)容,CALayer依賴uivew提供的容器來顯示繪制的內(nèi)容。歸根到底CALayer是這一切的基礎,如果沒有CALayer,UIView自身也不會存在,UIView是一個特殊的CALayer實現(xiàn),添加了響應事件的能力。UIView本身,更像是一個CALayer的管理器,訪問它的跟繪圖和跟坐標有關的屬性,例如frame,bounds等等,實際上內(nèi)部都是在訪問它所包含的CALayer的相關屬性。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容