iOS的Core Animation的一點(diǎn)總結(jié)記錄

前言

iOS核心動(dòng)畫(huà)框架Core Animation,可以從“動(dòng)畫(huà)”的兩個(gè)字上進(jìn)行理解。何為“動(dòng)畫(huà)”?首先,它是一系列的“畫(huà)”,因此,其包含“畫(huà)”這個(gè)過(guò)程,也就是繪圖的過(guò)程;其次,這些“畫(huà)”要“動(dòng)”起來(lái),才能成為“動(dòng)畫(huà)”,也就是它要包含“動(dòng)”的過(guò)程。這應(yīng)該是所有系統(tǒng)實(shí)現(xiàn)“動(dòng)畫(huà)”的基本過(guò)程,iOS也不例外。
從Core Animation的框架組成來(lái)看,也確實(shí)如此:

CoreAnimation框架組成

“畫(huà)”也就是繪圖

撇開(kāi)硬件層Graphics Hardware,iOS提供了兩個(gè)繪圖框架:OpenGL ES/OpenGL和Core Grapics。

  1. OpenGL ES/OpenGL : 第三方開(kāi)源庫(kù),這個(gè)就不用多說(shuō)了,是個(gè)地球人都知道。
  2. Core Graphic : 是對(duì)蘋(píng)果自己實(shí)現(xiàn)的繪圖框架Quart 2D的封裝,Quart 2D 是一組二維繪圖和渲染API,而Core Graphic則是通過(guò)這組API實(shí)現(xiàn)繪圖功能的。需要注意的是,它可以在iOS和Mac OS通用。

Core Animation通過(guò)以上兩個(gè)繪圖框架實(shí)現(xiàn)了“畫(huà)”的功能。

“動(dòng)”串聯(lián)了“畫(huà)”

Core Animation是QuartzCore的子集,甚至可以說(shuō)就是QuartzCore = Core Animation,這點(diǎn)可以通過(guò)其頭文件看到:

#ifndef QUARTZCORE_H
#define QUARTZCORE_H

#include <QuartzCore/CoreAnimation.h>

#endif /* QUARTZCORE_H */

這里也就解釋了一直困擾我的問(wèn)題:QuartzCore、 Core Animation、Core Graphic 、Quart 2D四者之間的關(guān)系。
注意:CoreAnimation也是在iOS和Mac OS上是通用的。

問(wèn)題總結(jié)

1.為什么CA神馬神馬的,用的時(shí)候好多都要“.CGXXXX”呢?

CALayer = [[CALayer alloc] init];
layer.backgroundColor = [UIColor redColor].CGColor;  

首先,CALayer,它是CoreAnimation中的類(lèi)。前面說(shuō)CoreAnimation是跨平臺(tái)的,為了跨平臺(tái)的特性,它的backgroundColor屬性就不能使用UIColor類(lèi)型了,因?yàn)閁IKit只能使用于iOS,而CoreGraphics框架是跨平臺(tái)的,所以CALayer類(lèi)的backgroundColor屬性就使用了CGColor類(lèi)型。所以使用時(shí)在賦值前要先進(jìn)行轉(zhuǎn)換,將UIKit中的東西轉(zhuǎn)換為CoreGraphics中的類(lèi)型。
參考 對(duì)CoreGraphics和QuartzCore的理解

持續(xù)更新中...

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

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

  • 本系列文章的重點(diǎn)是關(guān)注在總結(jié)iOS圖形圖像的原理和性能優(yōu)化的常規(guī)解決方案。 事先聲明,本文絕大多數(shù)概念和內(nèi)容均來(lái)源...
    ac3閱讀 4,181評(píng)論 10 14
  • 在iOS中框架是一個(gè)目錄,包含了共享資源庫(kù),用于訪問(wèn)該資源庫(kù)中儲(chǔ)存的代碼的頭文件,以及圖像、聲音文件等其他資源。共...
    ch123閱讀 1,847評(píng)論 0 1
  • 在iOS中框架是一個(gè)目錄,包含了共享資源庫(kù),用于訪問(wèn)該資源庫(kù)中儲(chǔ)存的代碼的頭文件,以及圖像、聲音文件等其他資源。共...
    wo不懂閱讀 1,609評(píng)論 3 3
  • 目錄: 主要繪圖框架介紹 CALayer 繪圖 貝塞爾曲線-UIBezierPath CALayer子類(lèi) 補(bǔ)充:i...
    Ryan___閱讀 1,790評(píng)論 1 9
  • DesignPatterns OO基礎(chǔ) 抽象 封裝 多態(tài) 繼承 面向?qū)ο蟮牧笤瓌t 單一職責(zé)原則:一個(gè)類(lèi)中應(yīng)該是一...
    SilenceDut閱讀 397評(píng)論 0 2

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