本系列文檔參考蘋果官文:Core Animation Programming Guide
還包括下面一系列文章:
- Core Animation編程指導(dǎo)(二)-Core Animation基礎(chǔ)知識
- Core Animation編程指導(dǎo)(三)-設(shè)置Layer對象
- Core Animation編程指導(dǎo)(四)-對Layer的content做動畫
- Core Animation編程指導(dǎo)(五)-構(gòu)建Layer層級樹
- Core Animation編程指導(dǎo)(六)-使用Animation的高級技巧
- Core Animation編程指導(dǎo)(七)-改變Layer默認(rèn)行為
- Core Animation編程指導(dǎo)(八)-提供Animation的性能
- Core Animation編程指導(dǎo)(九)-補充
Core Animation是一個提供圖像渲染和動畫能力(能夠讓APP中的view和其他視覺元素進(jìn)行動畫)的基礎(chǔ)框架, 支持iOS和OS X. 使用Core Animation創(chuàng)建動畫, 你只需創(chuàng)建一個動畫對象然后配置該對象(比如,起始/結(jié)束點), 最后啟動改動就可以了. 其他事情都交給Core Animation去完成, 像繪制動畫的每一幀這種活兒就是由Core Animation框架完成的. 另外Core Animation會將實際繪圖工作移交給機載圖形硬件來完成, 這是外了加速渲染. 這種自動地圖形加速會使動畫高幀率展示從而變的平滑流暢, 而不會加重CPU的負(fù)擔(dān)和減慢APP的速度.
如果你正在編程iOS應(yīng)用, 不管你有意識還無意識, 其實你已經(jīng)正在使用CoreAnimation了. 另外如果你在開發(fā)OSX程序, 那么可以不費吹噓之力便可利用CoreAnimation框架帶來的好處. CoreAnimation位于Appkit和UIKit的下層, 并集成到了cocoa和cocoa touch中視圖的工作流中. 而且, 由于CoreAnimation的存在, 它暴露了一些APP中view沒有公開的功能, 并讓你可以對APP動畫有個更細(xì)致的控制.
簡介
你可能沒和Core Animation直接接觸過, 但你應(yīng)該明白Core Animation在你的APP中扮演的角色-提供基礎(chǔ)服務(wù).
Core Animation管理APP中的內(nèi)容
CoreAnimation自己本身不是一個繪圖系統(tǒng). 它是在硬件中合成和操控你APP內(nèi)容的一個基礎(chǔ)設(shè)施. 該基礎(chǔ)設(shè)施的核心就是layer(圖層)對象, 它是用來管理和控制view中的內(nèi)容的. layer對象能夠?qū)iew中的內(nèi)容保存到bitmap中, 這樣就能夠容易讓硬件來控制了. 在大多數(shù)APP中, layer僅用來管理view中的內(nèi)容的, 但你也可以按需來創(chuàng)建一個獨立的layer對象.
修改layer產(chǎn)生動畫
大多數(shù)動畫時通過修改layer屬性來創(chuàng)建的. 和view類似, layer也有bonds, position, opacity, transform等一些視覺相關(guān)的屬性, 這些屬性時可寫的. 對于大多數(shù)layer屬性來說, 修改它們會產(chǎn)生一個隱式的動畫, 這個動畫是從舊值到新值的一個變化. 為了更好的控制這些屬性動畫, 你可以顯式地創(chuàng)建這些屬性動畫.
多個layer可以組合在一起構(gòu)成一個樹結(jié)構(gòu)
多個layer可以組合成父-子關(guān)系的樹結(jié)構(gòu). 這種組合方式和view的組合一樣可以改變他們呈現(xiàn)的內(nèi)容. 和view關(guān)聯(lián)的一組layer的層級結(jié)構(gòu)反應(yīng)對的一組view的層級關(guān)系. 你還可以單獨往layer層級樹中添加一個layer來擴展APP的視覺內(nèi)容, 而不是通過view.
通過Action對象改變Layer的默認(rèn)行為
隱式layer動畫是通過action對象來實現(xiàn)的, 這些action是一些實現(xiàn)了預(yù)定義接口的普通對象. 核心動畫使用action對象來實現(xiàn)與layer關(guān)聯(lián)的默認(rèn)動畫集. 你可以創(chuàng)建的action對象來實現(xiàn)自定義動畫, 或者使用它們來實現(xiàn)其他類型的layer行為. 然后, 將action對象賦值給layer的屬性. 當(dāng)該屬性改變時, CoreAnimation將檢索你的action對象, 并執(zhí)行該action.