異同點(diǎn):
1.相同點(diǎn):
UIView纸泡、UIWindow和CALayer都有共同的基類NSObject绩郎;
2.不同點(diǎn):
2.1、
UIView:繼承于UIResponder萍启,所以UIView可以響應(yīng)用戶事件;
CALayer:是繼承于NSObject总珠,所以不可以響應(yīng)用戶事件.
2.2、
UIView:屬于UIkit.framework框架,負(fù)責(zé)渲染矩形區(qū)域的內(nèi)容,為矩形區(qū)域添加動(dòng)畫,響應(yīng)區(qū)域的觸摸事件勘纯,布局局服,和管理一個(gè)或多個(gè)子視圖 ;
UIWindow:屬于UIKit.framework框架,是一種特殊的UIView,通常在一個(gè)程序中只會(huì)有一個(gè)UIWindow,但可以手動(dòng)創(chuàng)建多個(gè)UIWindow,同時(shí)加到程序里面驳遵。
UIWindow在程序中主要起到三個(gè)作用:
1腌逢、作為容器,包含App程序所要顯示的所有視圖
2、傳遞觸摸消息到其他的UIView和其他對(duì)象
3超埋、與UIViewController協(xié)同工作,方便完成設(shè)備方向旋轉(zhuǎn)的支持
2.3搏讶、
UIView:側(cè)重于對(duì)內(nèi)容的管理,CALayer側(cè)重于對(duì)內(nèi)容的繪制.
UIWindow:是特殊的UIView,通常一個(gè)app只有一個(gè)UIWindow,我們可以創(chuàng)建一個(gè)視圖控制器,然后將這個(gè)視圖控制器添加到UIWindow上面,這時(shí)這個(gè)視圖控制器就是app的First Responder.
CALayer:屬于QuartzCore.framework,是用來(lái)繪制內(nèi)容的,對(duì)內(nèi)容進(jìn)行動(dòng)畫處理依賴與UIView來(lái)進(jìn)行顯示,不能處理用戶事件霍殴。
UIView和CALayer是相互依賴的,UIView依賴CALayer來(lái)提供內(nèi)容媒惕,CALayer依賴于UIView來(lái)顯示繪制內(nèi)容。
**延伸: **
UIViewController:管理視圖的幾成熟,每個(gè)視圖控制器都有一個(gè)自帶的視圖,并且負(fù)責(zé)這個(gè)視圖相關(guān)的一切事務(wù)来庭。方便管理視圖中的子視圖,負(fù)責(zé)model與view的通信;檢測(cè)設(shè)備旋轉(zhuǎn)以及內(nèi)存警告;是所有視圖控制類的積累,定義了控制器 的基本功能妒蔚。