核心動(dòng)畫(huà)(基礎(chǔ)動(dòng)畫(huà))

一、簡(jiǎn)單介紹
項(xiàng)目中常用的動(dòng)畫(huà)效果基本使用CABasicAnimation就能完成,它CAPropertyAnimation的子類(lèi)
屬性解析:

   fromValue:keyPath相應(yīng)屬性的初始值
   toValue:keyPath相應(yīng)屬性的結(jié)束值

核心動(dòng)畫(huà)是一種假象動(dòng)畫(huà)
隨著動(dòng)畫(huà)的進(jìn)行,在長(zhǎng)度為duration的持續(xù)時(shí)間內(nèi),keyPath相應(yīng)屬性的值從fromValue漸漸地變?yōu)閠oValue
如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在動(dòng)畫(huà)執(zhí)行完畢后,圖層會(huì)保持顯示動(dòng)畫(huà)執(zhí)行后的狀態(tài)。但在實(shí)質(zhì)上,圖層的屬性值還是動(dòng)畫(huà)執(zhí)行前的初始值,并沒(méi)有真正被改變。
比如,CALayer的position初始值為(0,0),CABasicAnimation的fromValue為(10,10),toValue為(100,100),雖然動(dòng)畫(huà)執(zhí)行完畢后圖層保持在(100,100)這個(gè)位置,實(shí)質(zhì)上圖層的position還是為(0,0)

  • Core Animation的使用步驟*
    1.使用它需要先添加QuartzCore.framework框架和引入主頭文件<QuartzCore/QuartzCore.h>(iOS7不需要)
    2.初始化一個(gè)CAAnimation對(duì)象,并設(shè)置一些動(dòng)畫(huà)相關(guān)屬性
    3.通過(guò)調(diào)用CALayer的addAnimation:forKey:方法增加CAAnimation對(duì)象到CALayer中,這樣就能開(kāi)始執(zhí)行動(dòng)畫(huà)了
    4.通過(guò)調(diào)用CALayer的removeAnimationForKey:方法可以停止CALayer中的動(dòng)畫(huà)

二、實(shí)例

  • 創(chuàng)建動(dòng)畫(huà)對(duì)象

      CABasicAnimation *rotationAnimation = [CABasicAnimation   animationWithKeyPath:@"transform.rotation.y"];
       rotationAnimation.toValue = @(2 * M_PI);
       rotationAnimation.repeatCount = MAXFLOAT;
       rotationAnimation.duration = 5;
       rotationAnimation.removedOnCompletion = NO;
    
  • 通過(guò)animationWithKeyPath設(shè)置不同動(dòng)畫(huà)效果
    常用KepPath動(dòng)畫(huà)效果
    transform.scale = 比例縮放
    transform.scale.x = 寬的比例縮放
    transform.scale.y = 高的比例縮放
    transform.rotation = 平面的旋轉(zhuǎn)
    transform.rotation.y =Y方向旋轉(zhuǎn)
    transform.rotation.x = X方向旋轉(zhuǎn)
    opacity = 透明度變化

  • 把動(dòng)畫(huà)對(duì)象添加到你想運(yùn)用動(dòng)畫(huà)的空間圖層上
    [self.iconView.layer addAnimation:rotationAnimation forKey:nil];

三、小結(jié)

所有動(dòng)畫(huà)對(duì)象的父類(lèi),負(fù)責(zé)控制動(dòng)畫(huà)的持續(xù)時(shí)間和速度,是個(gè)抽象類(lèi),不能直接使用,應(yīng)該使用它具體的子類(lèi)
屬性解析:(紅色代表來(lái)自CAMediaTiming協(xié)議的屬性)
duration:動(dòng)畫(huà)的持續(xù)時(shí)間
repeatCount:動(dòng)畫(huà)的重復(fù)次數(shù)
repeatDuration:動(dòng)畫(huà)的重復(fù)時(shí)間
removedOnCompletion:默認(rèn)為YES,代表動(dòng)畫(huà)執(zhí)行完畢后就從圖層上移除,圖形會(huì)恢復(fù)到動(dòng)畫(huà)執(zhí)行前的狀態(tài)。如果想讓圖層保持顯示動(dòng)畫(huà)執(zhí)行后的狀態(tài),那就設(shè)置為NO,不過(guò)還要設(shè)置fillMode為kCAFillModeForwards
fillMode:決定當(dāng)前對(duì)象在非active時(shí)間段的行為.比如動(dòng)畫(huà)開(kāi)始之前,動(dòng)畫(huà)結(jié)束之后
beginTime:可以用來(lái)設(shè)置動(dòng)畫(huà)延遲執(zhí)行時(shí)間,若想延遲2s,就設(shè)置為CACurrentMediaTime()+2,CACurrentMediaTime()為圖層的當(dāng)前時(shí)間
timingFunction:速度控制函數(shù),控制動(dòng)畫(huà)運(yùn)行的節(jié)奏
delegate:動(dòng)畫(huà)代理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,697評(píng)論 6 30
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺iOS動(dòng)畫(huà)全貌。在這里你可以看...
    F麥子閱讀 5,271評(píng)論 5 13
  • Core Animation Core Animation,中文翻譯為核心動(dòng)畫(huà),它是一組非常強(qiáng)大的動(dòng)畫(huà)處理API,...
    45b645c5912e閱讀 3,158評(píng)論 0 21
  • 本文轉(zhuǎn)載自:http://www.cocoachina.com/ios/20150105/10812.html 為...
    idiot_lin閱讀 1,382評(píng)論 0 1
  • 顯式動(dòng)畫(huà) 顯式動(dòng)畫(huà),它能夠?qū)σ恍傩宰鲋付ǖ淖远x動(dòng)畫(huà),或者創(chuàng)建非線性動(dòng)畫(huà),比如沿著任意一條曲線移動(dòng)。 屬性動(dòng)畫(huà) ...
    清風(fēng)沐沐閱讀 2,098評(píng)論 1 5

友情鏈接更多精彩內(nèi)容