布局 - 這是準(zhǔn)備你的視圖/圖層的層級(jí)關(guān)系,以及設(shè)置圖層屬性(位置筛严,背景色醉旦,邊框等等)的階段。
顯示 - 這是圖層的寄宿圖片被繪制的階段桨啃。繪制有可能涉及你的-drawRect:和-drawLayer:inContext:方法的調(diào)用路徑车胡。
準(zhǔn)備 - 這是Core Animation準(zhǔn)備發(fā)送動(dòng)畫數(shù)據(jù)到渲染服務(wù)的階段。這同時(shí)也是Core Animation將要執(zhí)行一些別的事務(wù)例如解碼動(dòng)畫過程中將要顯示的圖片的時(shí)間點(diǎn)照瘾。
提交 - 這是最后的階段匈棘,Core Animation打包所有圖層和動(dòng)畫屬性,然后通過IPC(內(nèi)部處理通信)發(fā)送到渲染服務(wù)進(jìn)行顯示析命。
但是這些僅僅階段僅僅發(fā)生在你的應(yīng)用程序之內(nèi)主卫,在動(dòng)畫在屏幕上顯示之前仍然有更多的工作。一旦打包的圖層和動(dòng)畫到達(dá)渲染服務(wù)進(jìn)程鹃愤,他們會(huì)被反序列化來形成另一個(gè)叫做渲染樹的圖層樹(在第一章“圖層樹”中提到過)簇搅。使用這個(gè)樹狀結(jié)構(gòu),渲染服務(wù)對(duì)動(dòng)畫的每一幀做出如下工作:
對(duì)所有的圖層屬性計(jì)算中間值软吐,設(shè)置OpenGL幾何形狀(紋理化的三角形)來執(zhí)行渲染
-
在屏幕上渲染可見的三角形
所以一共有六個(gè)階段瘩将;最后兩個(gè)階段在動(dòng)畫過程中不停地重復(fù)。前五個(gè)階段都在軟件層面處理(通過CPU)凹耙,只有最后一個(gè)被GPU執(zhí)行姿现。而且,
你真正只能控制前兩個(gè)階段:布局和顯示肖抱。
Core Animation框架在內(nèi)部處理剩下的事務(wù)备典,你也控制不了它。
轉(zhuǎn)載: