Core Animation

原文地址:http://mp.weixin.qq.com/s?__biz=MzA5OTU3NjAxNA==&mid=2653646242&idx=2&sn=5c91492507ae4ccba9b1d15c9bd2650f&scene=0#wechat_redirect?

一:Core Animation簡介

Core Animation陡鹃,中文翻譯為核心動畫不皆,它是一組非常強大的動畫處理API能扒,使用它能做出非常炫麗的動畫效果瓮恭,而且往往是事半功倍。也就是說剃袍,使用少量的代碼就可以實現(xiàn)非常強大的功能剥悟。

Core Animation可以用在MacOS X和iOS平臺。

Core Animation的動畫執(zhí)行過程都是在后臺操作的蹦骑,不會阻塞主線程赶么。

要注意的是,Core Animation是直接作用在CALayer上的脊串,并非UIView辫呻。

核心動畫:如果是xcode5之前的版本,使用它需要先添加QuartzCore.framework和引入對應(yīng)的框架琼锋。

開發(fā)步驟:

1.使用它需要先添加??框架和引入主頭文件放闺;

2.初始化一個CAAnimation對象,并設(shè)置一些動畫相關(guān)屬性缕坎;

3.通過調(diào)用CALayer的addAnimation:forKey:方法增加CAAnimation對象到CALayer中怖侦,這樣就能開始執(zhí)行動畫了;

4.通過調(diào)用CALayer的removeAnimationForKey:方法可以停止CALayer中的動畫谜叹。

二:CAAnimation繼承結(jié)構(gòu)

三:CAAnimation——屬性

1.是所有動畫對象的父類匾寝,負(fù)責(zé)控制動畫的持續(xù)時間和速度,是個?抽象類?荷腊,不能直接使用艳悔,應(yīng)該使用它具體的子類;

2.屬性說明:

1)?duration:動畫的持續(xù)時間女仰;

2)?repeatCount:重復(fù)次數(shù)猜年,無限循環(huán)可以設(shè)置HUGE_VALF或者M(jìn)AXFLOAT;

3)?repeatDuration:重復(fù)時間疾忍;

4)?removedOnCompletion:默認(rèn)為YES乔外,代表動畫執(zhí)行完畢后就從圖層上移除,圖形會恢復(fù)到動畫執(zhí)行前的狀態(tài)一罩。如果想讓圖層保持顯示動畫執(zhí)行后的狀態(tài)杨幼,那就設(shè)置為NO,不過還要設(shè)置fillMode為kCAFillModeForwards;

5)?fillMode:決定當(dāng)前對象在非active時間段的行為差购。比如動畫開始之前或者動畫結(jié)束之后补疑;

6)?beginTime:可以用來設(shè)置動畫延遲執(zhí)行時間,若想延遲2s歹撒,就設(shè)置為CACurrentMediaTime()+2莲组,CACurrentMediaTime()為圖層的當(dāng)前時間;

7)?timingFunction:速度控制函數(shù)暖夭,控制動畫運行的節(jié)奏锹杈;

8)?delegate?:動畫代理。

四:CAAnimation——動畫填充模式

fillMode屬性值(要想fillMode有效迈着,最好設(shè)置removedOnCompletion= NO)

1)?kCAFillModeRemoved?這個是默認(rèn)值竭望,也就是說當(dāng)動畫開始前和動畫結(jié)束后,動畫對layer都沒有影響裕菠,動畫結(jié)束后咬清,layer會恢復(fù)到之前的狀態(tài);

2)?kCAFillModeForwards?當(dāng)動畫結(jié)束后奴潘,layer會一直保持著動畫最后的狀態(tài)旧烧;

3)?kCAFillModeBackwards?在動畫開始前,只需要將動畫加入了一個layer画髓,layer便立即進(jìn)入動畫的初始狀態(tài)并等待動畫開始掘剪;

4)?kCAFillModeBoth?這個其實就是上面兩個的合成.動畫加入后開始之前,layer便處于動畫初始狀態(tài)奈虾,動畫結(jié)束后layer保持動畫最后的狀態(tài)夺谁。

五:CAAnimation——速度控制函數(shù)

速度控制函數(shù)(CAMediaTimingFunction)

animation.timingFunction=

[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];

1)?kCAMediaTimingFunctionLinear(線性):勻速,給你一個相對靜態(tài)的感覺肉微;

2)?kCAMediaTimingFunctionEaseIn(漸進(jìn)):動畫緩慢進(jìn)入匾鸥,然后加速離開;

3)?kCAMediaTimingFunctionEaseOut(漸出):動畫全速進(jìn)入碉纳,然后減速的到達(dá)目的地勿负;

4)?kCAMediaTimingFunctionEaseInEaseOut(漸進(jìn)漸出):動畫緩慢的進(jìn)入,中間加速村象,然后減速的到達(dá)目的地笆环。這個是默認(rèn)的動畫行為攒至。

下圖展示了前面四種Timing Function的曲線圖,橫座標(biāo)表示時間,縱座標(biāo)表示變化量,這點需要搞清楚(并不是平面座標(biāo)系中xy)厚者。

六:CAPropertyAnimation

1) 是CAAnimation的子類,也是個抽象類迫吐,要想創(chuàng)建動畫對象库菲,應(yīng)該使用它的兩個子類;

2) CABasicAnimation志膀;

3) CAKeyframeAnimation熙宇;

4) 屬性說明:keyPath:通過指定CALayer的一個屬性名稱為keyPath(NSString類型)鳖擒,并且對CALayer的這個屬性的值進(jìn)行修改,達(dá)到相應(yīng)的動畫效果烫止。比如蒋荚,指定@“position”為keyPath,就修改CALayer的position屬性的值馆蠕,以達(dá)到平移的動畫效果期升。

七:CABasicAnimation——基本動畫

1.屬性說明:

1)?keyPath?:要改變的屬性名稱(傳字符串);

2)?fromValue?:keyPath相應(yīng)屬性的初始值互躬;

3)?toValue?:keyPath相應(yīng)屬性的結(jié)束值播赁;

4)?autoreverses:?(默認(rèn)為NO) 當(dāng)你設(shè)定這個屬性為 YES 時,在它到達(dá)目的地之后吼渡,動畫的返回到開始的值容为,代替了直接跳轉(zhuǎn)到 開始的值。

示例

八:CAKeyframeAnimation——關(guān)鍵幀動畫

1.關(guān)鍵幀動畫寺酪,也是CAPropertyAnimation的子類坎背,與CABasicAnimation的區(qū)別是:CABasicAnimation只能從一個數(shù)值(fromValue)變到另一個數(shù)值(toValue),而CAKeyframeAnimation會使用一個NSArray保存這些數(shù)值寄雀。

NOTICE: CAKeyframeAnimation則可以支持任意多個關(guān)鍵幀,關(guān)鍵幀有兩種方式來指定:

①使用path或者使用values,path是一個CGPathRef的值,且path只能對CALayer的 anchorPoint 和 position 屬性起作用,且設(shè)置了path之后values就不再起效了沼瘫;

②而values則更加靈活. keyTimes這個可選參數(shù)可以為對應(yīng)的關(guān)鍵幀指定對應(yīng)的時間點,其取值范圍為0到1.0,keyTimes中的每一個時間值都對應(yīng)values中的每一幀.當(dāng)keyTimes沒有設(shè)置的時候,各個關(guān)鍵幀的時間是平分的。

1)?values?:上述的NSArray對象咙俩。里面的元素稱為“關(guān)鍵幀”(keyframe)耿戚。動畫對象會在指定的時間(duration)內(nèi),依次顯示values數(shù)組中的每一個關(guān)鍵幀

2)?path?:代表路徑可以設(shè)置一個CGPathRef阿趁、CGMutablePathRef膜蛔,讓圖層按照路徑軌跡移動。path只對CALayer的anchorPoint和position起作用脖阵。如果設(shè)置了path皂股,那么values將被忽略

3)?keyTimes?:可以為對應(yīng)的關(guān)鍵幀指定對應(yīng)的時間點,其取值范圍為0到1.0命黔,keyTimes中的每一個時間值都對應(yīng)values中的每一幀呜呐。如果沒有設(shè)置keyTimes,各個關(guān)鍵幀的時間是平分的CABasicAnimation可看做是只有2個關(guān)鍵幀的CAKeyframeAnimation悍募。

Values方式 示例

path方式 示例

九:轉(zhuǎn)場動畫——CATransition

1.CATransition是CAAnimation的子類蘑辑,用于做轉(zhuǎn)場動畫,能夠為層提供移出屏幕和移入屏幕的動畫效果坠宴。iOS比Mac OS X的轉(zhuǎn)場動畫效果少一點

2.UINavigationController就是通過CATransition實現(xiàn)了將控制器的視圖推入屏幕的動畫效果

<1>type:動畫過渡類型

<2>subtype:動畫過渡方向

<3>startProgress:動畫起點(在整體動畫的百分比)

<4>endProgress:動畫終點(在整體動畫的百分比)

十:CAAnimationGroup——動畫組

1.動畫組洋魂,是CAAnimation的子類,可以保存一組動畫對象,將CAAnimationGroup對象加入層后副砍,組中所有動畫對象可以同時并發(fā)運行

2.屬性說明:

<1>animations:用來保存一組動畫對象的NSArray

<2>默認(rèn)情況下衔肢,一組動畫對象是同時運行的,也可以通過設(shè)置動畫對象的beginTime屬性來更改動畫的開始時間豁翎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末角骤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子心剥,更是在濱河造成了極大的恐慌启搂,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刘陶,死亡現(xiàn)場離奇詭異胳赌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匙隔,發(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
  • 那天,我揣著相機(jī)與錄音迈嘹,去河邊找鬼削彬。 笑死全庸,一個胖子當(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
  • 我被黑心中介騙來泰國打工启涯, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留贬堵,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓结洼,卻偏偏與公主長得像黎做,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子松忍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

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