動(dòng)畫學(xué)習(xí)篇(一)

動(dòng)畫學(xué)習(xí)

一库北、基礎(chǔ)知識(shí)

層次圖

CAAnimation是所有動(dòng)畫類的父類,它是一個(gè)抽象類载荔,不能夠直接使用應(yīng)該使用它的子類

動(dòng)畫類

類的說明

  1. 能用的動(dòng)畫類只有 4 個(gè)子類
  • CABasicAnimation

  • CAKeyframeAnimation

  • CATransition

  • CAAnimationGroup

     ①CABasicAnimation
     通過設(shè)定起始點(diǎn)生闲,終點(diǎn),時(shí)間洞渤,動(dòng)畫會(huì)沿著你這設(shè)定點(diǎn)進(jìn)行移動(dòng)∥钒穑可以看做特殊的CAKeyFrameAnimation
     ②CAKeyframeAnimation
     Keyframe顧名思義就是關(guān)鍵點(diǎn)的frame您宪,你可以通過設(shè)定CALayer的始點(diǎn)、中間關(guān)鍵點(diǎn)奠涌、終點(diǎn)的frame宪巨,時(shí)間,動(dòng)畫會(huì)沿你設(shè)定的軌跡進(jìn)行移動(dòng)
     ③CAAnimationGroup
      Group也就是組合的意思溜畅,就是把對(duì)這個(gè)Layer的所有動(dòng)畫都組合起來捏卓。
     ④CATransition
     這個(gè)就是蘋果幫開發(fā)者封裝好的一些動(dòng)畫
    

二、CABasicAnimation

  • 常見屬性:

      duration: 動(dòng)畫持續(xù)時(shí)間
      repeatCount: 動(dòng)畫重復(fù)次數(shù)
      repeatDuration: 設(shè)置動(dòng)畫的時(shí)間慈格,在該段時(shí)間內(nèi)動(dòng)畫一直執(zhí)行怠晴,不記次數(shù)
      timingFunction: 動(dòng)畫的變化速度
      fillMode: 動(dòng)畫在開始和結(jié)束時(shí)的動(dòng)作,默認(rèn)只是kCAFillModeRemoved
      beginTime: 設(shè)置動(dòng)畫開始執(zhí)行時(shí)間
      autoreverses: 動(dòng)畫結(jié)束時(shí)是否執(zhí)行逆動(dòng)畫
      fromValue: 所改變屬性的起始值
      toValue: 所改變屬性的起始值
    

一些常用的aniamtionWithKeyPath的值

說明 使用形式
transform.translation 平移變換 @(100)
transform.translation.x 沿x軸平移 @(100)
transform.translation.y 沿y軸平移 @(100)
transform.scale 比例轉(zhuǎn)化 @(0.8)
transform.scale.x 寬的比例 @(0.8)
transform.scale.y 高的比例 @(0.8)
transform.rotation.x 圍繞x軸旋轉(zhuǎn) @(M_PI)
transform.rotation.y 圍繞y軸旋轉(zhuǎn) @(M_PI)
transform.rotation.z 圍繞z軸旋轉(zhuǎn) @(M_PI)
position 位置改變 [NSValue valueWithCGPoint(100,100)]
opacity 透明度 @(0.7)
backgroundColor 背景顏色的變化 [UIColor redColor].CGColor
bounds 大小的變化浴捆,中心點(diǎn)不變 [NSValue valueWithCGSize:CGSizeMake(50, 50)]
contents 內(nèi)容變化蒜田,比如UIImageView的圖片 [UIImage imageNamed:@"123.png"].CGImage

下面實(shí)現(xiàn)一個(gè)簡(jiǎn)單的位移動(dòng)畫

CABasicAnimation *positionAniamtion = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];//沿x軸位移
positionAniamtion.fromValue = @100;
positionAniamtion.toValue = @150;
positionAniamtion.duration = 2.0;
positionAniamtion.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//動(dòng)畫完成后不刪除
positionAniamtion.removedOnCompletion = NO;
//保持最新的狀態(tài)
positionAniamtion.fillMode = kCAFillModeForwards;
[self.myView.layer addAnimation:positionAniamtion forKey:@"positionAniamtion"];

三、CAKeyframeAnimation

CAKeyframeAnimation是核心動(dòng)畫里面的幀動(dòng)畫,它提供了按照指定的一串值進(jìn)行動(dòng)畫,好像拍電影一樣的一幀一幀的效果
1选泻、屬性說明

values: 許多值組成的的數(shù)組用來進(jìn)行動(dòng)畫的冲粤,只有在path屬性值為nil的時(shí)候才有作用
path:  路徑,可以指定一個(gè)路徑页眯,讓動(dòng)畫沿著這個(gè)指定的路徑執(zhí)行
keyTimes:設(shè)置關(guān)鍵幀對(duì)應(yīng)的時(shí)間點(diǎn)梯捕,范圍:0-1。如果沒有設(shè)置該屬性窝撵,則每一幀的時(shí)間平分傀顾。
cacluationMode:  計(jì)算模式,主要針對(duì)的是每一幀的內(nèi)容為一個(gè)坐標(biāo)點(diǎn)的情況
rotationMode:  旋轉(zhuǎn)樣式

附上代碼:

CAKeyframeAnimation *ani = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, NULL, CGRectMake(130, 200, 100, 100));
ani.path = path;
CGPathRelease(path);
ani.duration = 2.0;
ani.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
ani.repeatCount = MAXFLOAT;
ani.removedOnCompletion = NO;
ani.fillMode = kCAFillModeForwards;
[self.myView.layer addAnimation:ani forKey:nil];

四碌奉、CATransition

主要用于轉(zhuǎn)場(chǎng)動(dòng)畫從一個(gè)場(chǎng)景以動(dòng)畫的形式過渡到另一個(gè)場(chǎng)景

1短曾、屬性說明

  • type: 轉(zhuǎn)場(chǎng)動(dòng)畫的類型寒砖,一個(gè)自定義的轉(zhuǎn)場(chǎng)動(dòng)畫中指定的過濾器屬性

     type的enum值:
     kCATransitionFade    漸變
     kCATransitonMoveIn   覆蓋
     kCATransitionPush    推出
     kCATransitionReveal  揭開
    

還有一些私有動(dòng)畫屬性,不推薦使用错英,私有動(dòng)畫類型的值有cube入撒、suckEffect隆豹、oglFlip椭岩、rippleEffect、pageCurl璃赡、pageUnCurl等等

附上代碼:

CATransition *ani = [CATransition animation];
ani.type = kCATransitionFade;//過渡動(dòng)畫的類型
ani.subtype = kCATransitionFromTop;//過渡動(dòng)畫的方向
ani.duration = 1.5;
ani.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
ani.repeatCount = MAXFLOAT;
ani.removedOnCompletion = NO;
ani.fillMode = kCAFillModeForwards;
self.myView.backgroundColor = [UIColor redColor];
[self.myView.layer addAnimation:ani forKey:nil];
  • subtype: 轉(zhuǎn)場(chǎng)動(dòng)畫將要去往的方向

    subtype的enum值:
    kCATransitionFromRight   從右邊
    kCATransitionFromLeft    從左邊
    kCATransitionFromTop     從頂部
    kCATransitionFromBottom  從底部
    
  • startProgress: 開始的位置進(jìn)度

  • endPrograss: 結(jié)束的位置進(jìn)度

系統(tǒng)API 效果 是否支持方向
KCATransitionFade 淡出效果
KCATransitionMoveIn 淡出效果
KCATransitionPush 新視圖移動(dòng)到舊視圖上
KCATransitionFade 新視圖退出舊視圖
KCATransitionReveal 移開舊視圖顯示新視圖
cube 淡出效果
suckEffect 撕日歷的效果
oglFlip 翻轉(zhuǎn)180°效果
rippleEffect 漣漪效果
pageCurl 向外翻書效果
pageUnCurl 向內(nèi)翻書效果
Transform3D的一些方法

1.偏移量的設(shè)置

CATransform3DMakeTranslation(x,y,z)

2.縮放的設(shè)置

CATransform3DMakeScale(x,y,z)

3.旋轉(zhuǎn)設(shè)置

CATransform3DMakeRotation(angle,x,y,z)

4.疊加設(shè)置

CATransform3DMakeRotate(transform3D,angle,x,y,z)

transfrom3D 經(jīng)過變換之后的 上述幾個(gè)返回的都是transfrom3D類型的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末判哥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碉考,更是在濱河造成了極大的恐慌塌计,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侯谁,死亡現(xiàn)場(chǎng)離奇詭異锌仅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)墙贱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門热芹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惨撇,你說我怎么就攤上這事伊脓。” “怎么了魁衙?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵报腔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我剖淀,道長(zhǎng)纯蛾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任纵隔,我火速辦了婚禮翻诉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巨朦。我一直安慰自己米丘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布糊啡。 她就那樣靜靜地躺著拄查,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棚蓄。 梳的紋絲不亂的頭發(fā)上堕扶,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天碍脏,我揣著相機(jī)與錄音,去河邊找鬼稍算。 笑死典尾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的糊探。 我是一名探鬼主播钾埂,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼科平!你這毒婦竟也來了褥紫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瞪慧,失蹤者是張志新(化名)和其女友劉穎髓考,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弃酌,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氨菇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妓湘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片查蓉。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖多柑,靈堂內(nèi)的尸體忽然破棺而出奶是,到底是詐尸還是另有隱情,我是刑警寧澤竣灌,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布聂沙,位于F島的核電站,受9級(jí)特大地震影響初嘹,放射性物質(zhì)發(fā)生泄漏及汉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一屯烦、第九天 我趴在偏房一處隱蔽的房頂上張望坷随。 院中可真熱鬧,春花似錦驻龟、人聲如沸温眉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)类溢。三九已至,卻和暖如春露懒,著一層夾襖步出監(jiān)牢的瞬間闯冷,已是汗流浹背砂心。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛇耀,地道東北人辩诞。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纺涤,于是被迫代替她去往敵國(guó)和親译暂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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

  • 先看看CAAnimation動(dòng)畫的繼承結(jié)構(gòu) CAAnimation{ CAPropertyAnimation { ...
    時(shí)間不會(huì)倒著走閱讀 1,649評(píng)論 0 1
  • 在iOS實(shí)際開發(fā)中常用的動(dòng)畫無(wú)非是以下四種:UIView動(dòng)畫洒琢,核心動(dòng)畫秧秉,幀動(dòng)畫褐桌,自定義轉(zhuǎn)場(chǎng)動(dòng)畫衰抑。 1.UIView...
    請(qǐng)叫我周小帥閱讀 3,092評(píng)論 1 23
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜荧嵌,今天將帶大家一窺ios動(dòng)畫全貌呛踊。在這里你可以看...
    每天刷兩次牙閱讀 8,485評(píng)論 6 30
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜啦撮,今天將帶大家一窺iOS動(dòng)畫全貌谭网。在這里你可以看...
    F麥子閱讀 5,110評(píng)論 5 13
  • 顯式動(dòng)畫 顯式動(dòng)畫,它能夠?qū)σ恍傩宰鲋付ǖ淖远x動(dòng)畫赃春,或者創(chuàng)建非線性動(dòng)畫,比如沿著任意一條曲線移動(dòng)织中。 屬性動(dòng)畫 ...
    清風(fēng)沐沐閱讀 1,935評(píng)論 1 5