UIView和CALayer的區(qū)別
1.UIView和CALayer的最大區(qū)別在于UIView可以響應(yīng)用戶事件,而CALyer不能,UIView側(cè)重于對(duì)顯示內(nèi)容的管理,CALayer側(cè)重于對(duì)內(nèi)容的繪制
2.UIView和CALayer是相互依賴的關(guān)系。UIView依賴于CALayer提供的內(nèi)容,CALayer依賴于UIView提供的容器來(lái)顯示繪制的內(nèi)容。
歸根結(jié)底CALayer是一切的基礎(chǔ),如果沒(méi)有CALayer,UIView自身也就不存在,UIView是一個(gè)特殊的CALayer實(shí)現(xiàn),添加了響應(yīng)時(shí)間的能力
3.UIView來(lái)自于CALayer,高于CALayer,是CALayer的高度實(shí)現(xiàn)與封裝。UIView的所有特性來(lái)自于CALayer的支持
UIView的layer樹(shù)形在系統(tǒng)內(nèi)部,被系統(tǒng)維護(hù)著三份copy
第一份,邏輯樹(shù),就是代碼里可以操縱的,例如更改layer的屬性等等就在這一份。
第二份,動(dòng)畫(huà)樹(shù),這是一個(gè)中間層,系統(tǒng)正在這一層上更改屬性,進(jìn)行各種渲染操作。
第三份,顯示樹(shù),這棵樹(shù)的內(nèi)容是當(dāng)前正被顯示在屏幕上的內(nèi)容。
這三棵樹(shù)的邏輯結(jié)構(gòu)都是一樣的,區(qū)別只有各自的屬性。