動畫核心Core Animation相關(guān)總結(jié)

  1. 介紹

Core Animation 是一個非常強大的動畫處理 API疮装,使用它能做出非常絢麗的動畫效果,而且往往是事半功倍缩宜,也就是說肘迎,使用少量的代碼就可以實現(xiàn)非常強大的功能。
蘋果封裝的 UIView 的 block 動畫就是對核心動畫的封裝锻煌,使用起來更加簡單妓布。
絕大多數(shù)情況下,使用 UIView 的 block 動畫能夠滿足開發(fā)中的日常需求宋梧。
一些很酷炫的動畫匣沼,還是需要通過核心動畫來完成的。

  1. 支持的平臺

Core Animation 同時支持 MAC OS 和 iOS 平臺

Core Animation 是直接作用在 CALayer 的捂龄,并非 UIView释涛。所以這個系列加叁,咱們是從 CALayer 開始的。
Core Animation 的動畫執(zhí)行過程都是在后臺操作的唇撬,不會阻塞主線程它匕。

  1. Core Animation 的繼承結(jié)構(gòu)圖

是所有動畫對象的父類,負(fù)責(zé)控制動畫的持續(xù)時間和速度窖认、是個抽象類豫柬,不能直接使用,應(yīng)該使用具體子類扑浸。需要注意的是CAAnimation 和 CAPropertyAnimation 都是抽象類烧给。
view 是負(fù)責(zé)響應(yīng)事件的, layer 是負(fù)責(zé)顯示的。

下面盜用了一張網(wǎng)絡(luò)上的圖片用來解釋繼承結(jié)構(gòu)喝噪。


繼承結(jié)構(gòu)圖

黃色的區(qū)塊是常用的屬性创夜、方法或者需要遵守的協(xié)議,灰色的是名稱仙逻。
其中 CAAnimationGroup、CABasicAnimation涧尿、CAKeyFramkeAnimation 咱們會在下次更新中寫一些小例子系奉。

  1. 常見屬性和使用步驟
    4.1 使用步驟
    通常分成三部完成:1,創(chuàng)建核心動畫對象姑廉;2缺亮,設(shè)置動畫屬性;3桥言,添加到要作用的 layer 上萌踱。就想把大象放進(jìn)冰箱需要三步一樣。哈哈~
    4.2 常用屬性
    就是咱們上面圖片中的小黃圖顯示的号阿。

duration:持續(xù)時間并鸵,默認(rèn)值是 0.25 秒

repeatCount: 重復(fù)次數(shù),無線循環(huán)可以設(shè)置 HUGE_VALF 或者 CGFLOAT_MAX

repeatDuration: 重復(fù)時間

removeOnCompletion: 默認(rèn)為 YES扔涧,代表動畫執(zhí)行完畢后就從圖層上移除园担,圖形會恢復(fù)到執(zhí)行動畫之前的狀態(tài)。如果想要圖層保持顯示動畫執(zhí)行后的狀態(tài)枯夜,那就設(shè)置為 NO弯汰,同時設(shè)置 fillMode 為 kCAFillModeForwards

fillMode:決定當(dāng)前對象在非 active 時間段的行為
beginTime:可以用來設(shè)置動畫延時執(zhí)行,若想延遲 2s湖雹,就設(shè)置為CACurrentMediaTIme() + 2

CACurrentMediaTIme():圖層的當(dāng)前時間

timingFunction: 速度控制函數(shù)咏闪,控制動畫運行節(jié)奏

delegate:動畫代理

4.3 animationWithKeyPath 中,常用的 keyPath
屬性名稱 類型 作用
transform.rotation.x CGFloat 或 float 繞 X 軸坐標(biāo)旋轉(zhuǎn) 角度
transform.rotation.y CGFloat 或 float 繞 Y 軸坐標(biāo)旋轉(zhuǎn) 角度
transform.rotation.z CGFloat 或 float 繞 Z 軸坐標(biāo)旋轉(zhuǎn) 角度
transform.rotation CGFloat 或 float 作用與 transform.tation.z 一樣


transform.scale CGFloat 整個 layer 的比例
transform.scale.x CGFloat x 軸坐標(biāo)比例變化
transform.scale.y CGFloat y 軸坐標(biāo)比例變化
transform.scale.z CGFloat z 軸坐標(biāo)比例變化


transform.translation CGMutablePathRef 整個 layer 的 xyz 軸都進(jìn)行移動
transform.translation.x CGMutablePathRef 橫向移動
transform.translation.y CGMutablePathRef 縱向移動
transform.translation.z CGMutablePathRef 縱深移動


opacity CGFloat 透明度, 閃爍等動畫用 摔吏。范圍是 0~1
backgroundColor CGColor 背景顏色
cornerRadius CGFloat 圓
4.4 動畫填充模式

kCAFillModeForwards: 當(dāng)動畫結(jié)束后鸽嫂,layer 會一直保持著動畫最后的狀態(tài)
kCAFillModeBackwards:在動畫開始前纵装,只需要將動畫加入了一個 layer,layer 便立即進(jìn)入動畫的初始狀態(tài)并等待動畫開始
kCAFillModeBoth:這個其實就是上面兩個合成溪胶,動畫加入后搂擦,開始之前,layer 便處于動畫初始狀態(tài)哗脖,動畫結(jié)束后 layer 保持動畫最后的狀態(tài)
kCAFillModeRemoved:這個是默認(rèn)值瀑踢,也就是說當(dāng)動畫開始前和動畫結(jié)束后,動畫對 layer 都沒有影響才避,動畫結(jié)束后橱夭,layer 會恢復(fù)到之前的狀態(tài) keyArc.calculationMode = kCAAnimationPaced;
4.5 速度控制函數(shù)

kCAMediaTimingFunctionLinear(線性):勻速,給你一個相對靜態(tài)的感覺
kCAMediaTimingFunctionEaseIn(漸進(jìn)):動畫緩慢進(jìn)入桑逝,然后加速離開
kCAMediaTimingFunctionEaseOut(漸出):動畫全速進(jìn)入棘劣,然后減速的到達(dá)目的地
kCAMediaTimingFunctionEaseInEaseOut(漸進(jìn)漸出):動畫緩慢的進(jìn)入,中間加速楞遏,然后減速的到達(dá)目的地茬暇。這個是默認(rèn)的動畫行為。 keyArc.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

是不是確實很枯燥寡喝?但是這條路本身就是大部分時間都很枯燥的啦~想逃也逃不掉糙俗。
這些屬性和方法也的確記不住,所以這一篇其實也就是自己總結(jié)整理了一下预鬓。以后再用的時候巧骚,看看自己總結(jié)的就好了。省得每次用的時候還要再去看一下文檔或者搜索了格二。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劈彪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子顶猜,更是在濱河造成了極大的恐慌沧奴,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件长窄,死亡現(xiàn)場離奇詭異扼仲,居然都是意外死亡,警方通過查閱死者的電腦和手機抄淑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門屠凶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肆资,你說我怎么就攤上這事矗愧。” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵唉韭,是天一觀的道長夜涕。 經(jīng)常有香客問我,道長属愤,這世上最難降的妖魔是什么女器? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮住诸,結(jié)果婚禮上驾胆,老公的妹妹穿的比我還像新娘。我一直安慰自己贱呐,他們只是感情好丧诺,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奄薇,像睡著了一般驳阎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上馁蒂,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天呵晚,我揣著相機與錄音,去河邊找鬼沫屡。 笑死劣纲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谁鳍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼劫瞳,長吁一口氣:“原來是場噩夢啊……” “哼倘潜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起志于,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涮因,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伺绽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體养泡,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年奈应,在試婚紗的時候發(fā)現(xiàn)自己被綠了澜掩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡杖挣,死狀恐怖肩榕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惩妇,我是刑警寧澤株汉,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布筐乳,位于F島的核電站,受9級特大地震影響乔妈,放射性物質(zhì)發(fā)生泄漏蝙云。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一路召、第九天 我趴在偏房一處隱蔽的房頂上張望勃刨。 院中可真熱鬧,春花似錦优训、人聲如沸朵你。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抡医。三九已至,卻和暖如春早敬,著一層夾襖步出監(jiān)牢的瞬間忌傻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工搞监, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留水孩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓琐驴,卻偏偏與公主長得像俘种,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绝淡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容