【iOS】CoreAnimation

類繼承結構

CAAnimation

CAAnimation是一個抽象動畫類,是所有動畫類的父類厨相,不能直接使用秤涩,應該使用它具體的子類。

CAMediaTiming

CAPropertyAnimation

CABasicAnimation 基礎動畫

隨著動畫的執(zhí)行嗽测,在duration的持續(xù)時間內(nèi),keyPath相應的屬性值從fromValue逐漸變?yōu)閠oValue

  • keyPath內(nèi)容是CALayer的可動畫Animation屬性

屬性:

  • fromValue:keyPath相應屬性值的初始值

  • toValue:keyPath相應屬性的結束值

  • byValue:keyPath相應屬性值的修改值

用法:

CABasicAnimation *animation = [CABasicAnimation animation];
animation.keyPath = @"position"; // 動畫類型
animation.duration = 5; // 動畫完成時間
animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)]; // 動畫初始值
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)]; // 動畫完成后值
animation.removedOnCompletion = NO; // 動畫完成后不刪除
animation.fillMode = kCAFillModeForwards; // 保持動畫最后狀態(tài)
[view.layer addAnimation:animation forKey:nil];     

CAKeyframeAnimation 關鍵幀動畫

CApropertyAnimation的子類肿孵,跟CABasicAnimation的區(qū)別是:CABasicAnimation只能從一個數(shù)值(fromValue)變到另一個數(shù)值(toValue)唠粥,而CAKeyframeAnimation會用一個NSArray保存多個這樣數(shù)值

屬性:

  • values:就是上述的NSArray對象疏魏。里面的元素稱為”關鍵幀”(keyframe)。動畫對象會在指定的時間(duration)內(nèi)晤愧,依次顯示values數(shù)組中的每一個關鍵幀

  • path:可以設置一個CGPathRef\CGMutablePathRef,讓層跟著路徑移動大莫。path只對CALayer的anchorPoint和position起作用。如果你設置了path养涮,那么values將被忽略

  • keyTimes:可以為對應的關鍵幀指定對應的時間點,其取值范圍為0到1.0,keyTimes中的每一個時間值都對應values中的每一幀.當keyTimes沒有設置的時候,各個關鍵幀的時間是平分的

說明:CABasicAnimation可看做是最多只有2個關鍵幀的CAKeyframeAnimation

用法:

CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
animation.keyPath = @"position";
animation.duration = 5;
NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(0, 100)];
NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(200, 100)];
NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(300, 200)];
NSValue *value5 = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
NSValue *value6 = [NSValue valueWithCGPoint:CGPointMake(100, 300)];
animation.values = @[value1, value2, value3, value4, value5, value6];
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.repeatCount = 3;
animation.delegate = self;
[_v.layer addAnimation:animation forKey:nil];

CATransition 轉場動畫

CAAnimation的子類葵硕,用于做轉場動畫,能夠為層提供移出屏幕和移入屏幕的動畫效果

屬性:

  • type:轉場動畫類型

  • subtype:轉場動畫方向

  • startProgress:動畫起點(在整體動畫的百分比)

  • endProgress:動畫終點(在整體動畫的百分比)

用法:

CATransition *transition = [CATransition animation];
transition.type = @"push"; // 轉場效果
transition.subtype = kCATransitionFromLeft; // 轉場方向
transition.duration = 2.0;
[_v.layer addAnimation:transition forKey:nil];

CAAnimationGroup 動畫組

CAAnimation的子類贯吓,可以保存一組動畫對象,將CAAnimationGroup對象加入層后蜀变,組中所有動畫對象可以同時并發(fā)運行

屬性:

  • animations:用來保存一組動畫對象的NSArray

默認情況下悄谐,一組動畫對象是同時運行的,也可以通過設置動畫對象的beginTime屬性來更改動畫的開始時間

用法:

// 平移動畫
CABasicAnimation *a1 = [CABasicAnimation animation];
a1.keyPath = @"transform.translation.y";
a1.toValue = @(100);

// 縮放動畫
CABasicAnimation *a2 = [CABasicAnimation animation];
a2.keyPath = @"transform.scale";
a2.toValue = @(0.0);

// 旋轉動畫
CABasicAnimation *a3 = [CABasicAnimation animation];
a3.keyPath = @"transform.rotation";
a3.toValue = @(M_PI_2);

// 組動畫
CAAnimationGroup *groupAnima = [CAAnimationGroup animation];
groupAnima.animations = @[a1, a2, a3];
groupAnima.duration = 2;
groupAnima.repeatCount = 2;
groupAnima.fillMode = kCAFillModeForwards;
groupAnima.removedOnCompletion = NO;

[view.layer addAnimation:groupAnima forKey:nil];
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末库北,一起剝皮案震驚了整個濱河市爬舰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寒瓦,老刑警劉巖情屹,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杂腰,居然都是意外死亡垃你,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門喂很,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惜颇,“玉大人,你說我怎么就攤上這事少辣×枭悖” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵漓帅,是天一觀的道長锨亏。 經(jīng)常有香客問我,道長忙干,這世上最難降的妖魔是什么器予? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮豪直,結果婚禮上劣摇,老公的妹妹穿的比我還像新娘。我一直安慰自己弓乙,他們只是感情好末融,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布钧惧。 她就那樣靜靜地躺著,像睡著了一般勾习。 火紅的嫁衣襯著肌膚如雪浓瞪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天巧婶,我揣著相機與錄音乾颁,去河邊找鬼。 笑死艺栈,一個胖子當著我的面吹牛英岭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湿右,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诅妹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毅人?” 一聲冷哼從身側響起吭狡,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丈莺,沒想到半個月后划煮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡缔俄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年弛秋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牵现。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡铐懊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞎疼,到底是詐尸還是另有隱情科乎,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布贼急,位于F島的核電站茅茂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏太抓。R本人自食惡果不足惜空闲,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望走敌。 院中可真熱鬧碴倾,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至僧须,卻和暖如春纲刀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背担平。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工示绊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暂论。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓面褐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親空另。 傳聞我的和親對象是個殘疾皇子盆耽,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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

  • 一、UIKit動畫 第一種寫法是利用屬性扼菠,結合beginAnimations、commitAnimations 第...
    Gary_Tseng閱讀 965評論 1 3
  • 在iOS中隨處都可以看到絢麗的動畫效果坝咐,實現(xiàn)這些動畫的過程并不復雜循榆,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,485評論 6 30
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫墨坚,核心動畫秧饮,幀動畫,自定義轉場動畫泽篮。 1.UIView...
    請叫我周小帥閱讀 3,092評論 1 23
  • 先看看CAAnimation動畫的繼承結構 CAAnimation{ CAPropertyAnimation { ...
    時間不會倒著走閱讀 1,649評論 0 1
  • 在iOS中隨處都可以看到絢麗的動畫效果盗尸,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌帽撑。在這里你可以看...
    F麥子閱讀 5,110評論 5 13