核心動畫CABasicAnimation

來源:互聯網
上載者:User

標籤:

Core Animation是一組非常強大的動畫處理API,使用它能做出非常炫麗的動 畫效果,而且往往是事半功倍! 

1.開發步驟:

初始化一個動畫對象(CAAnimation)並設定一些動畫相關屬性

添加動畫對象到層(CALayer)中,開始執行動畫

Core Animation的動畫執行過程都是在後台操作的,不會阻塞主線程 

2.Core Animation的主要類

提供顯示內容的圖層類:CALayer及其子類

動畫和計時類:CAAnimation及其子類、CAMediaTiming

布局和約束類:CAConstraint、CAConstraintLayoutManager

事務類,在原子更新的時候組合圖層類:CATransaction、CAActiontransition 

3.CABasicAnimation基本動畫,是CAPropertyAnimation的子類

屬性說明:

fromValue:keyPath相應屬性的初始值

toValue:keyPath相應屬性的結束值 

3.1動畫過程說明:

隨著動畫的進行,在長度為duration的期間內,keyPath相應屬性的值從fromValue 漸漸地變為toValue

keyPath內容是CALayer的可動畫Animatable屬性

如果fillMode=kCAFillModeForwards同時removedOnComletion=NO,那麼在動畫執 行完畢後,圖層會保持顯示動畫執行後的狀態。但在實質上,圖層的屬性值還是動畫執行前的 初始值,並沒有真正被改變。 

上代碼:

// 1 CAanimation

    //bounds transform

    //KeyPath:指定layer的一個屬性值,通過修改該屬性值達到動畫的效果

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

    

    //2 設定屬性

    //1>動畫的起始值

    animation.fromValue = @0.5;

    //2>動畫的結束值

    animation.toValue = @3;

    

//---------    CAMediaTiming----------

    

    //3>動畫的期間

    animation.duration = 3;

    //4>自動回放 (多花一倍時間)

//    animation.autoreverses = YES;

    //5>動畫完成後移除動畫 (如果不移除動畫,需要和填充方式一起使用)

    animation.removedOnCompletion = NO; //(預設是yes)

    //6>填充方式

    animation.fillMode = kCAFillModeForwards;

//    animation.fillMode = kCAFillModeBackwards;

    /*

     kCAFillModeForwards:保留動畫結束後的效果

     kCAFillModeBackwards:動畫開始之前,會提前進入動畫開始的效果(開延時才可以看出)

     kCAFillModeBoth:2者都有

     kCAFillModeRemoved:2者都沒有

     

     */

    //7>beginTime:開始時間 (延遲一秒之後執行動畫)

//    animation.beginTime = CACurrentMediaTime()+1;

    

    //8>timeOffset 時間位移量 (開始執行第2秒的動畫,執行到指定的期間為止)

//    animation.timeOffset = 2;

    //9>repeatCount:重複次數

    animation.repeatCount = 2;

    //10>repeatDuration:重複的總時間 (如果和重複次數有衝突,遵循重複時間)

    animation.repeatDuration =4;

    //11>speed:動畫的速度 (和期間衝突)

    animation.speed =.3;

    

      //3 將動畫對象添加到layer上面

    //key:標示

    //animation對象在這copy一份;所以屬性要寫在添加之前

    [self.myImageView.layer addAnimation:animation forKey:@"animation"];

 

核心動畫CABasicAnimation

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.