iOS 核心動畫

來源:互聯網
上載者:User

標籤:

 

 核心動畫:

 在iOS中核心動畫分為幾類:基礎動畫、主要畫面格動畫、動畫組、轉場動畫 各個類的關係如我的

 CAAnimation:核心動畫的基礎類,不能直接使用,負責動畫已耗用時間、速度的控制,本身實現了CAMediaTiming協議。

 CAPropertyAnimation:屬性動畫的基類(通過屬性進行動畫設定,注意是動畫屬性),不能直接使用。

 CABasicAnimation:基礎動畫,通過屬性修改進行動畫參數控制,只有初始狀態和結束狀態。

 CAKeyframeAnimation:主要畫面格動畫,同樣是通過屬性進行動畫參數控制,但是同基礎動畫不同的是它可以有多個狀態控制。

 CAAnimationGroup:動畫組,動畫組是一種組合模式設計,可以通過動畫組來進行所有動畫行為的統一控制,組中所有動畫效果可以並發執行。

 CATransition:轉場動畫,主要通過濾鏡進行動畫效果設定。

 

  基礎動畫、主要畫面格動畫都屬於屬性動畫,就是通過修改屬性值產生動畫效果,開發人員只需要設定初始值和結束值,中間的過程動畫(又叫“補間動畫”)由系統自動計算產生。和基礎動畫不同的是主要畫面格動畫可以設定多個屬性值,每兩個屬性中間的補間動畫由系統自動完成,因此從這個角度而言基礎動畫又可以看成是有兩個主要畫面格的主要畫面格動畫

 

 ---------------------------------------

 本節主要講基礎動畫CABasicAnimation

 

 CAAnimation 他本身也是一個抽象類別,如果想使用動畫,就必須使用他的子類

 他有兩個子類:

 CABasicAnimation 基礎動畫

 CAKeyframeAnimation 主要畫面格動畫

 她倆的區別:CABasicAnimation只能從一個數值(fromValue)變到另一個數值(toValue),而CAKeyframeAnimation會使用一個NSArray儲存這些數值

 

 CABasicAnimation :

 

 建立基礎動畫 需要通過fromValue 和toValue 屬性來指定一個開始值和結束值  當添加基礎動畫到層中的時候,它開始變化

 

 autoreverses:當設定這個屬性為 YES 時,在它到達目的地之後,會以動畫的方式返回到開始的值

 

 duration 設定開始值到結束值花費的時間 期間會被速度的屬性影響

 

 speed 預設的值為 1.0.這意味著動畫播放按照預設的速度。如果你改變這個值為 2.0,動畫會用 2 倍的速度播放。 這樣的影響就是使期間減半。如果你指定的期間為 6 秒,速度為 2.0,動畫就會播放 3 秒鐘---一半的 期間

 把速度設定成0 就可以暫停動畫

 

 beginTime 這個屬性在組動畫中很有用。它根據父動畫組的期間,指定了開始播放動畫的時間。預設的是 0.0.

 

 timeOffset 如果一個時間位移量是被設定,動畫不會真正的可見,直到根據父動畫組中的執行時間得到的時間都流逝了

 

 repeatCount 預設的是 0,意味著動畫只會播放一次  這個不應該和 repeatDration 屬性一塊使用。

 

 repeatDuration 這個屬性指定了動畫應該被重複多久。動畫會一直重複,直到設定的時間流逝完。它不應該和 repeatCount 一起使用

 

 timingFunction 速度控制函數,控制動畫啟動並執行節奏

 timingFunction 屬性值:

 kCAMediaTimingFunctionLinear(線性):勻速,給你一個相對靜態感覺

 kCAMediaTimingFunctionEaseIn(漸進):動畫緩慢進入,然後加速離開

 kCAMediaTimingFunctionEaseOut(漸出):動畫全速進入,然後減速的到達目的地

 kCAMediaTimingFunctionEaseInEaseOut(漸進漸出):動畫緩慢的進入,中間加速,然後減速的到達目的地。這個是預設的動畫行為。

 

 

 removedOnCompletion 預設為YES,代表動畫執行完畢後就從圖層上移除,圖形會恢複到動畫執行前的狀態。如果想讓圖層保持顯示動畫執行後的狀態,那就設定為NO,不過還要設定fillMode為kCAFillModeForwards

 

 

 fillMode  設定當前對象在非啟用時間段的行為 比如動畫開始之前或者動畫結束之後

 fillMode屬性值(上面提到過 要想fillMode有效,需要設定removedOnCompletion = NO)

 

 kCAFillModeRemoved 這個是預設值,也就是說當動畫開始前和動畫結束後,動畫對layer都沒有影響,動畫結束後,layer會恢複到之前的狀態

 kCAFillModeForwards 當動畫結束後,layer會一直保持著動畫最後的狀態

 kCAFillModeBackwards 在動畫開始前,只需要將動畫加入了一個layer,layer便立即進入動畫的初始狀態並等待動畫開始。

 kCAFillModeBoth 這個其實就是上面兩個的合成.動畫加入後開始之前,layer便處於動畫初始狀態,動畫結束後layer保持動畫最後的狀態

 

 

 

 可以通過改變animationWithKeyPath來改變動畫的屬性:

 transform.scale = 比例轉換

 

 transform.scale.x

 

 transform.scale.y

 

 transform.rotation.z

 

 opacity = 透明度

 

 zPosition

 

 backgroundColor 背景顏色

 

 cornerRadius 圓角

 

 borderWidth

 

 bounds

 

 contents

 

 contentsRect

 

 cornerRadius

 

 frame

 

 hidden

 

 mask

 

 masksToBounds

 

 opacity

 

 position

 

 shadowColor

 

 shadowOffset

 

 shadowOpacity

 

 shadowRadius

 

iOS 核心動畫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.