CAKeyframeAnimation關(guān)鍵幀動(dòng)畫

定義:任何動(dòng)畫要表現(xiàn)出運(yùn)動(dòng)或者變化,至少需要兩個(gè)不同的關(guān)鍵狀態(tài),而中間的狀態(tài)的變化可以通過插值計(jì)算完成,從而形成補(bǔ)間動(dòng)畫,表示關(guān)鍵狀態(tài)的幀叫做關(guān)鍵幀.

CABasicAnimation其實(shí)可以看作一種特殊的關(guān)鍵幀動(dòng)畫,只有頭尾兩個(gè)關(guān)鍵幀.CAKeyframeAnimation則可以支持任意多個(gè)關(guān)鍵幀,關(guān)鍵幀有兩種方式來指定,使用path或者使用values,path是一個(gè)CGPathRef的值,且path只能對(duì)CALayer的 anchorPoint 和 position 屬性起作用,且設(shè)置了path之后values就不再起效了.而values則更加靈活. keyTimes這個(gè)可選參數(shù)可以為對(duì)應(yīng)的關(guān)鍵幀指定對(duì)應(yīng)的時(shí)間點(diǎn),其取值范圍為0到1.0,keyTimes中的每一個(gè)時(shí)間值都對(duì)應(yīng)values中的每一幀.當(dāng)keyTimes沒有設(shè)置的時(shí)候,各個(gè)關(guān)鍵幀的時(shí)間是平分的.

CABasicAnimation基礎(chǔ)動(dòng)畫只能從一個(gè)值變到另外一個(gè)值;只有三個(gè)屬性:

@property(nullable, strong) id fromValue;

@property(nullable, strong) id toValue;

@property(nullable, strong) id byValue;

CAKeyframeAnimation關(guān)鍵幀添加了許多的屬性:

//一個(gè)NSArray對(duì)象珊佣。里面的元素稱為”關(guān)鍵幀”(keyframe),動(dòng)畫對(duì)象會(huì)在指定的時(shí)間(duration)內(nèi)萍膛,依次顯示values數(shù)組中的每一個(gè)關(guān)鍵幀

@property(nullable, copy) NSArray *values;

//path : (畫圓改化、橢圓、貝塞兒曲線)可以設(shè)置一個(gè)CGPathRef\CGMutablePathRef,讓層跟著路徑移動(dòng),path只對(duì)CALayer的anchorPoint和position起作用,如果你設(shè)置了path恼琼,那么values將被忽略

@property(nullable) CGPathRef path;

@property(nullable, copy) NSArray*keyTimes;

//控制動(dòng)畫快進(jìn)慢出、慢進(jìn)快出等特性

@property(nullable, copy) NSArray*timingFunctions;

@property(copy) NSString *calculationMode;

@property(nullable, copy) NSArray*tensionValues;

@property(nullable, copy) NSArray*continuityValues;

@property(nullable, copy) NSArray*biasValues;

@property(nullable, copy) NSString *rotationMode;

用例:

上下抖動(dòng)
沿著橢圓運(yùn)動(dòng)

//注釋:

1.我們可以利用values來定義各個(gè)位置,來規(guī)劃直線路徑集币。

2.我們可以利用keypath來畫線,這樣規(guī)劃曲線路徑來進(jìn)行動(dòng)畫翠忠。

關(guān)鍵幀動(dòng)畫的基礎(chǔ)步驟

1.決定你想要做動(dòng)畫的屬性(例如,框架,背景,錨點(diǎn),位置,邊框,等等)?

2.在動(dòng)畫對(duì)象值的區(qū)域中,指定開始,結(jié)束,和中間的值鞠苟。這些都是你的關(guān)鍵幀(看清單 4-2)

3.使用 duration 這個(gè)字段指定動(dòng)畫的時(shí)間

4.通常來講,通過使用 times 這個(gè)字段,來給每幀動(dòng)畫指定一個(gè)時(shí)間。如果你沒有指定這些,核心動(dòng)畫就

會(huì)通過你在 values 這個(gè)字段指定的值分割出時(shí)間段秽之。

5.通常,指定時(shí)間功能來控制步調(diào)当娱。 這些都是你需要做的。你創(chuàng)建你的動(dòng)畫和增加他們到層中考榨。調(diào)用-addAnimation 就開始了動(dòng)畫跨细。

//注意:

calculationMode這個(gè)屬性非常重要:

計(jì)算模式.其主要針對(duì)的是每一幀的內(nèi)容為一個(gè)座標(biāo)點(diǎn)的情況,也就是對(duì)anchorPoint 和 position 進(jìn)行的動(dòng)畫.這個(gè)屬性用來設(shè)定, 關(guān)鍵幀中間的值是怎么被計(jì)算的河质。

CA_EXTERN NSString * const kCAAnimationLinear

//Simple linear calculation between keyframe values.

//簡(jiǎn)單的線性計(jì)算冀惭,也是默認(rèn)值。

CA_EXTERN NSString * const kCAAnimationDiscrete

//Each keyframe value is used in turn, no interpolated values are calculated.

//輪流使用關(guān)鍵值掀鹅,無內(nèi)插值參與計(jì)算散休,即離散的點(diǎn)。

CA_EXTERN NSString * const kCAAnimationPaced

//Linear keyframe values are interpolated to produce an even pace throughout the animation.

//通過內(nèi)插值乐尊,均勻的進(jìn)行動(dòng)畫戚丸。

CA_EXTERN NSString * const kCAAnimationCubic

//Smooth spline calculation between keyframe values..

//光滑運(yùn)算

CA_EXTERN NSString * const kCAAnimationCubicPaced

//Cubic keyframe values are interpolated to produce an even pace throughout the //animation.

//既光滑又勻速。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末科吭,一起剝皮案震驚了整個(gè)濱河市昏滴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌对人,老刑警劉巖谣殊,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異牺弄,居然都是意外死亡姻几,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門势告,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛇捌,“玉大人,你說我怎么就攤上這事咱台÷绨瑁” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵回溺,是天一觀的道長(zhǎng)春贸。 經(jīng)常有香客問我混萝,道長(zhǎng),這世上最難降的妖魔是什么萍恕? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任逸嘀,我火速辦了婚禮,結(jié)果婚禮上允粤,老公的妹妹穿的比我還像新娘崭倘。我一直安慰自己,他們只是感情好类垫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布司光。 她就那樣靜靜地躺著,像睡著了一般阔挠。 火紅的嫁衣襯著肌膚如雪飘庄。 梳的紋絲不亂的頭發(fā)上脑蠕,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天购撼,我揣著相機(jī)與錄音,去河邊找鬼谴仙。 笑死迂求,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晃跺。 我是一名探鬼主播揩局,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼掀虎!你這毒婦竟也來了凌盯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤烹玉,失蹤者是張志新(化名)和其女友劉穎驰怎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體二打,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡县忌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了继效。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症杏。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瑞信,靈堂內(nèi)的尸體忽然破棺而出厉颤,到底是詐尸還是另有隱情,我是刑警寧澤凡简,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布逼友,位于F島的核電站绩郎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏翁逞。R本人自食惡果不足惜肋杖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挖函。 院中可真熱鬧状植,春花似錦、人聲如沸怨喘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽必怜。三九已至肉拓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梳庆,已是汗流浹背暖途。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膏执,地道東北人驻售。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像更米,于是被迫代替她去往敵國(guó)和親欺栗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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