異同點:
1.相同點:
UIView、UIWindow和CALayer都有共同的基類NSObject;
2.不同點:
2.1、
UIView:繼承于UIResponder,所以UIView可以響應用戶事件;
CALayer:是繼承于NSObject,所以不可以響應用戶事件.
2.2、
UIView:屬于UIkit.framework框架,負責渲染矩形區域的內容,為矩形區域添加動畫,響應區域的觸摸事件,布局,和管理一個或多個子視圖 ;
UIWindow:屬于UIKit.framework框架,是一種特殊的UIView,通常在一個程序中只會有一個UIWindow,但可以手動創建多個UIWindow,同時加到程序里面。
UIWindow在程序中主要起到三個作用:
1、作為容器,包含App程序所要顯示的所有視圖
2、傳遞觸摸消息到其他的UIView和其他對象
3、與UIViewController協同工作,方便完成設備方向旋轉的支持
2.3、
UIView:側重于對內容的管理,CALayer側重于對內容的繪制.
UIWindow:是特殊的UIView,通常一個app只有一個UIWindow,我們可以創建一個視圖控制器,然后將這個視圖控制器添加到UIWindow上面,這時這個視圖控制器就是app的First Responder.
CALayer:屬于QuartzCore.framework,是用來繪制內容的,對內容進行動畫處理依賴與UIView來進行顯示,不能處理用戶事件。
UIView和CALayer是相互依賴的,UIView依賴CALayer來提供內容,CALayer依賴于UIView來顯示繪制內容。
**延伸: **
UIViewController:管理視圖的幾成熟,每個視圖控制器都有一個自帶的視圖,并且負責這個視圖相關的一切事務。方便管理視圖中的子視圖,負責model與view的通信;檢測設備旋轉以及內存警告;是所有視圖控制類的積累,定義了控制器 的基本功能。