Core Animation之框架簡介(一)

最近花了不少時(shí)間學(xué)習(xí)了核心動(dòng)畫(Core Animation),打算用幾篇日志來整理看過的內(nèi)容,大家共同學(xué)習(xí)。Core Animation在IOS和MAC OSX上略有區(qū)別,這里只介紹IOS部分。
一、Core Animation簡介
1、簡介
Core Animation是一套包含圖形繪制、投影、動(dòng)畫的Objective-C類集合,該框架包含在QuartzCore.framework中,它因?yàn)楸挥糜谔幚砀鼮閺?qiáng)大的平滑的轉(zhuǎn)場效果而引入OS X Leopard和iOS而出名。Core Animation和其它框架的位置關(guān)系如下圖所示:



CPU作為電腦的處理核心,負(fù)責(zé)處理各種各樣的數(shù)據(jù),什么都可以干。而GPU作為一個(gè)專門為圖形高并發(fā)計(jì)算量身定做的處理單元,能同時(shí)更新所有的像素,并把結(jié)果顯示到顯示器上,在圖形處理方面具有相當(dāng)?shù)膶I(yè)性,而且還具有高效的特點(diǎn)。它的出現(xiàn)使得CPU從大量的圖形數(shù)據(jù)處理中解放出來。
上圖中的OpenGL ES是個(gè)C語言寫的非常底層的圖形處理框架,是個(gè)移動(dòng)設(shè)備上繪制2D和3D計(jì)算機(jī)圖形的標(biāo)準(zhǔn)開源庫,廣泛地被用在游戲的圖形繪制上,負(fù)責(zé)直接驅(qū)動(dòng)GPU,效率非常高,缺點(diǎn)是使用起來異常復(fù)雜。
Core Animation是對OpenGL ES的Objective-C封裝,具有與OpenGL ES幾乎等價(jià)的高性能,卻隱藏了OpenGL ES的復(fù)雜性。
我們經(jīng)常說到的硬件加速其實(shí)是指OpenGL,Core Animation/UIKit基于GPU之上對計(jì)算機(jī)圖形合成以及繪制的實(shí)現(xiàn),直到目前為止,IOS上的硬件加速能力還是大大領(lǐng)先與Android,后者由于依賴CPU的繪制,絕大多數(shù)的動(dòng)畫實(shí)現(xiàn)都會(huì)讓人感覺明顯的卡頓。
2、特點(diǎn)
主要具有具有以下特點(diǎn):
①簡單易用
我們只需要少量的代碼就能畫出各種想要的圖形,實(shí)現(xiàn)相當(dāng)炫的動(dòng)畫效果,這要?dú)w功與Core Animation框架的完美設(shè)計(jì)。
②、輕量級
Core Animation使用的數(shù)據(jù)結(jié)構(gòu)都是輕量級的,因此可以同時(shí)顯示很多個(gè)圖層,并向這些圖層增加不同的動(dòng)畫效果。
③、高效
Core Animation的實(shí)質(zhì)是OpenGL ES之上的一個(gè)抽象,它具有與OpenGL ES幾乎等價(jià)的高性能。

二、Core Animation框架中的主要類
下面通過Core Animation的類結(jié)構(gòu)來描述整個(gè)框架。
1、CALayer
中文名叫圖層類,是整個(gè)Core Animation的基礎(chǔ),也是所有Core Animation圖層類的父類。

2、CAAnimation
CAAnimation是所有Core Animation中動(dòng)畫類的父類,遵守NSCoding、NSCopying、CAMediaTiming和CAAction協(xié)議,負(fù)責(zé)實(shí)現(xiàn)各種動(dòng)畫效果,是Cocoa Touch動(dòng)畫的基礎(chǔ)。

3、CADisplaylink
CADisplayLink的使用有點(diǎn)像NSTimer,本身也是一個(gè)定時(shí)器對象,只不過它的用途更專一,只用于界面顯示幀更新相關(guān)的操作,并且通常不允許子類化。

4、CAMediaTimingFunction
該類定義了一個(gè)動(dòng)畫的執(zhí)行步調(diào),目前Core Animation提供有kCAMediaTimingFunctionLinear、kCAMediaTimingFunctionEaseIn、kCAMediaTimingFunctionEaseOut、kCAMediaTimingFunctionEaseInEaseOut四種,當(dāng)然我們也可以定制自己想要的執(zhí)行步調(diào)。

5、CATransaction
CATransaction(事務(wù))是Core Animation中一個(gè)將若干個(gè)對圖層樹的屬性修改操作以原子方式更新到渲染樹的機(jī)制。所有對圖層樹的修改都需要有事務(wù),只不過有的是隱式的使用事務(wù),有的是顯式的使用事務(wù)。事務(wù)支持嵌套使用。

6、CAValueFunction
暫時(shí)沒理解該類的用途,等明白了再解釋。

7、CAMediaTiming協(xié)議
官方文檔中的描述:CAMediaTiming協(xié)議通過每個(gè)遵守該協(xié)議的對象描述從父對象的時(shí)間到當(dāng)前對象的時(shí)間的映射,定義了一個(gè)分層的時(shí)間系統(tǒng),原文如下:
The CAMediaTiming protocol models a hierarchical timing system, with each object describing the mapping of time values from the object's parent to local time.
不是很明白,這句話的含義,等理解透徹了再來解釋。
總之,通過該協(xié)議,我們能為遵守該協(xié)議的CAAnimation對象提供動(dòng)畫的持續(xù)時(shí)間、速度和重復(fù)計(jì)數(shù)等屬性。

8、NSValue
Core Animation框架對NSValue進(jìn)行了類擴(kuò)展,使其支持對CATransform3D結(jié)構(gòu)體進(jìn)行對象化轉(zhuǎn)換。

到這里Core Animation框架的大致結(jié)構(gòu)說完了,后續(xù)的文章會(huì)一個(gè)個(gè)解釋框架中的幾乎每個(gè)類。學(xué)習(xí)該框架的過程中又不少東西沒理解透,請多多指教。

參考文章:
http://o0o0o0o.iteye.com/blog/1728599
原文地址:
http://blog.csdn.net/wzzvictory/article/details/11180241

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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