實(shí)現(xiàn)動(dòng)畫方式深度解析(四) —— QuartzCore框架(一)

版本記錄

版本號 時(shí)間
V1.0 2017.09.20

前言

app中好的炫的動(dòng)畫可以讓用戶耳目一新,為產(chǎn)品增色不少,關(guān)于動(dòng)畫的實(shí)現(xiàn)我們可以用基本動(dòng)畫、關(guān)鍵幀動(dòng)畫、序列幀動(dòng)畫以及基于CoreGraphic的動(dòng)畫等等,接下來這幾篇我就介紹下我可以想到的幾種動(dòng)畫繪制方法。具體Demo示例已開源到Github —— 刀客傳奇,感興趣的可以看我寫的另外幾篇。
1. 實(shí)現(xiàn)動(dòng)畫方式深度解析(一) —— 播放GIF動(dòng)畫(一)
2. 實(shí)現(xiàn)動(dòng)畫方式深度解析(二) —— 播放GIF動(dòng)畫之框架FLAnimatedImage的使用(二)
3. 實(shí)現(xiàn)動(dòng)畫方式深度解析(三) —— 播放序列幀動(dòng)畫(一)

框架基本結(jié)構(gòu)

1. OC中所有系統(tǒng)框架及分類

說到框架這里需要外延一下子,大家對OC中的有哪些框架以及具體可以分為幾類清楚嗎?下面我們就看一下OC中框架的基本結(jié)構(gòu)。

看完上面幾個(gè)圖示,大家應(yīng)該會(huì)感覺順了很多。

2. QuartzCore框架

大家知道利用CoreAnimation可以實(shí)現(xiàn)動(dòng)畫,但是CoreAnimation并不是一個(gè)單獨(dú)的框架,它是屬于QuartzCore框架里面的。下面我們就看一下這個(gè)框架的結(jié)構(gòu)和主要的類。


框架的主要功能模塊分類

1. Layer Basics

  • CALayer

    • 該對象可以管理基于圖像的內(nèi)容,同時(shí)允許你在那個(gè)內(nèi)容上執(zhí)行動(dòng)畫。
  • CALayerDelegate

    • 你的app可以實(shí)現(xiàn)的與layer相關(guān)事件響應(yīng)。
  • CAConstraint

    • 在兩個(gè)layers之間的單個(gè)的布局(layout)。
  • CALayoutManager

    • 允許對象管理layer及其子layer的布局的方法。
  • CAConstraintLayoutManager

    • 提供基于constraint layout管理者對象。
  • CAAction

    • 一個(gè)接口,允許對象響應(yīng)CALayer觸發(fā)的行為。

2. Drawing Text, Shapes, and Colors

  • CAGradientLayer

    • 一個(gè)layer用于在background color上畫顏色漸變色,填充圖層的形狀(包括圓角)。
  • CAShapeLayer

    • 在其坐標(biāo)空間中繪制立方貝塞爾樣條曲線的圖層。
  • CATextLayer

    • 一個(gè)提供簡單文本布局和渲染純文本或?qū)傩宰址膱D層。

3. Animating Content

  • CAAnimation

    • Core Animation動(dòng)畫抽象父類。
  • CAAnimationDelegate

    • 您的應(yīng)用程序可以實(shí)現(xiàn)的方法,以便在動(dòng)畫開始和停止時(shí)進(jìn)行響應(yīng)。
  • CAPropertyAnimation

    • CAAnimation的一個(gè)抽象子類,用于創(chuàng)建操縱圖層屬性值的動(dòng)畫。
  • CABasicAnimation

    • 為圖層屬性提供基本的單關(guān)鍵幀動(dòng)畫功能的對象。
  • CAKeyframeAnimation

    • 為圖層對象提供關(guān)鍵幀動(dòng)畫功能的對象。
  • CASpringAnimation

    • 一種將彈簧般的力應(yīng)用于圖層屬性的動(dòng)畫。
  • CATransition

    • 提供圖層狀態(tài)之間動(dòng)畫轉(zhuǎn)換的對象。
  • CAValueFunction

    • 提供定義動(dòng)畫轉(zhuǎn)換的靈活方法的對象。

4. Batching Animations

  • CAAnimationGroup

    • 允許將多個(gè)動(dòng)畫分組并同時(shí)運(yùn)行的對象。
  • CATransaction

    • 將多個(gè)層次樹操作分組到渲染樹的原子更新的機(jī)制。

5. Timing

  • CAMediaTimingFunction

    • 將動(dòng)畫的起搏定義為時(shí)序曲線的函數(shù)。
  • CAMediaTiming

    • 對分層計(jì)時(shí)系統(tǒng)進(jìn)行建模的方法,允許對象在其父級和本地時(shí)間之間映射時(shí)間。

6. Working with Particle Systems

7. Advanced Layer Options

  • CAReplicatorLayer

    • 創(chuàng)建其子層(源層)的指定數(shù)量的副本的層,每個(gè)副本可能具有應(yīng)用于其的幾何,時(shí)間和顏色轉(zhuǎn)換。
  • CAScrollLayer

    • 顯示可滾動(dòng)內(nèi)容大于其自己的邊界的圖層。
  • CATiledLayer

    • 異步提供圖層內(nèi)容的一個(gè)圖層,可能在多個(gè)細(xì)節(jié)級別緩存。
  • CATransformLayer

    • CATransformLayer對象用于創(chuàng)建真正的3D圖層層次結(jié)構(gòu),而不是其他CALayer類使用的扁平化層次呈現(xiàn)模型。

8. Synchronizing Drawing to the Refresh Rate of the Display

  • CADisplayLink

    • 一個(gè)定時(shí)器對象,允許應(yīng)用程序?qū)⑵淅L圖同步到顯示器的刷新率。

9. Rendering Using Low-Level Graphics APIs

  • CAEAGLLayer

    • 支持在iOS和tvOS應(yīng)用程序中繪制OpenGL內(nèi)容的圖層。
  • CAMetalLayer

    • 一個(gè)管理金屬繪圖池的圖層。
  • CAMetalDrawable

    • Metal可以呈現(xiàn)或?qū)懭氲目娠@示資源。
  • CAOpenGLLayer

    • CAOpenGLLayer提供了適合于渲染OpenGL內(nèi)容的圖層。
  • CARenderer

    • 一個(gè)允許應(yīng)用程序?qū)訕滗秩镜?code>Core OpenGL(CGL)上下文中的層。

10. Remote Display of Layer Content

11. Reference

12. Extended Types

后記

未完,待續(xù)~~

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

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

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