分類來看:
UIView是視圖的基類,
UIViewController是視圖控制器的基類样悟,
UIResponder是表示一個可以在屏幕上響應(yīng)觸摸事件的對象狮斗;
UIwindow:
UIwindow是UIView的子類随珠,
UIWindow的主要作用:
一是提供一個區(qū)域來顯示UIView,二是將事件(event)的分發(fā)給UIView班利,一個應(yīng)用基本上只有一個UIWindow.
萬物歸根,UIView和CALayer都是的老祖都是NSObjet榨呆÷薇辏可見 UIResponder是用來響應(yīng)事件的,也就是UIView可以響應(yīng)用戶事件积蜻。
CALayer 和 UIView 的區(qū)別:
UIView的繼承結(jié)構(gòu)為: UIResponder : NSObject闯割。
CALayer的繼承結(jié)構(gòu)為: NSObject「筒穑可見 UIResponder是用來響應(yīng)事件的宙拉,也就是UIView可以響應(yīng)用戶事件,CALayer直接從 NSObject繼承丙笋,因?yàn)槿鄙倭薝IResponder類谢澈,不能響應(yīng)任何用戶事件。
所屬框架,UIView是在 /System/Library/Frameworks/UIKit.framework中定義的,UIKit主要是用來構(gòu)建用戶界面不见,并且是可以響應(yīng)事件的澳化。CALayer是在/System/Library/Frameworks/QuartzCore.framework定義的。而且CALayer作為一個低級的稳吮,可以承載繪制內(nèi)容的底層對象出現(xiàn)在該框架中
UIView相比CALayer最大區(qū)別是UIView可以響應(yīng)用戶事件缎谷,而CALayer不可以。UIView側(cè)重于對顯示內(nèi)容的管理,CALayer側(cè)重于對內(nèi)容的繪制列林。UIView是基于CALayer的高層封裝瑞你。
總結(jié):
UIView是用來顯示內(nèi)容的,可以處理用戶事件希痴。
CALayer是用來繪制內(nèi)容的者甲,對內(nèi)容進(jìn)行動畫處理依賴與UIView來進(jìn)行顯示,不能處理用戶事件砌创。
為什么是兩套體系虏缸?
并不是兩套體系,UIView和CALayer是相互依賴的關(guān)系嫩实。UIView依賴與calayer提供的內(nèi)容刽辙,CALayer依賴uivew提供的容器來顯示繪制的內(nèi)容。歸根到底CALayer是這一切的基礎(chǔ)甲献,如果沒有CALayer宰缤,UIView自身也不會存在,UIView是一個特殊的CALayer實(shí)現(xiàn)晃洒,添加了響應(yīng)事件的能力慨灭。UIView本身,更像是一個CALayer的管理器球及,訪問它的跟繪圖和跟坐標(biāo)有關(guān)的屬性氧骤,例如frame,bounds等等吃引,實(shí)際上內(nèi)部都是在訪問它所包含的CALayer的相關(guān)屬性语淘。