iOS UIView動畫以及CA動畫

UlView是iOS中所有的界面元素都繼承自它,它本身完全是由CoreAnimation來實(shí)現(xiàn)的。每一 ^^ UlView內(nèi)部都默認(rèn)關(guān)聯(lián)著一個layer,真正的繪圖部分,是由一個叫CALayer (Core Animation Layer)的類來管理;

UlView有個layer屬性,可以返回它的主CALayer實(shí)例,UlView有一個layerClass方法,返回主 layer所使用的類,UlView的子類,可以通過重載這個方法,來讓UlView使用不同的CALayer來顯 示; UlView的layer樹形在系統(tǒng)內(nèi)部,被維護(hù)著三份copy (presentLayer Tree、modeLayer Tree、 render Tree),修改動畫的屬性,其實(shí)是Layer的presentLayer的屬性值;

動畫的運(yùn)作:對UlView的subLayer (非主Layer)屬性進(jìn)行更改,系統(tǒng)將自動進(jìn)行動畫生成。

區(qū)別

1.UlView繼承自UIResponder,能接收并響應(yīng)事件,負(fù)責(zé)顯示內(nèi)容的管理;而CALayer繼承自 NSObject,不能響應(yīng)事件,負(fù)責(zé)顯示內(nèi)容的繪制;
2.UlView側(cè)重于展示內(nèi)容,而CALayer則側(cè)重于圖形和界面的繪制;
3.當(dāng)View展示的時候,View是layer的CALayerDelegate,View展示的內(nèi)容是由CALayer進(jìn)行display 的;
4.view內(nèi)容展示依賴CALayer對內(nèi)容的繪制,UlView的frame也是由內(nèi)部的CALayer進(jìn)行繪制;
5.對UlView的屬性修改,不會引起動畫效果,但是對于CALayer的屬性修改,是支持默認(rèn)動畫效果 的,在view執(zhí)行動畫的時候,view是layer的代理,layer通過actionForLayer: forkey向?qū)?yīng)的 代理view請求動畫action;
6.每個UlView內(nèi)部都有一個CALayer在背后提供內(nèi)容的繪制和顯示,并且UlView的尺寸樣式 都由內(nèi)部的Layer所提供,layer比view多了個anchorPoint;

  1. —個CALayer的frame是由其anchorPoint, position, bounds, transform共同決定的而一 個UlView的的frame只是簡單地返回CALayer的frame,同樣UlView的center和bounds也只是簡單 返回CALayer的Posit ion和Bounds對應(yīng)屬性。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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