IOS Animation-CABasicAnimation、CAKeyFrameAnimation詳解&區別&聯絡,cabasicanimation詳解
1.先看看網上流傳的他們的繼承圖:
從上面可以看出CABasicAnimation與CAKeyframeAnimation都繼承於CAPropertyAnimation。而CAPropertyAnimation提供了基本的動畫屬性設定keyPath、additive、cumulative。
2.詳解
1)CABasicAnimation
CABasicAnimation提供了最基礎的動畫屬性設定,是簡單的keyframe動畫效能。CABasicAnimation可以看做是一種CAKeyframeAnimation的簡單動畫,因為它只有頭尾的主要畫面格(keyframe)。
我們可以建立一個CABasicAnimaiton的對象通過keyPath的方式。CABasicAnimation提供了fromValue、toValue、byValue的設定(插值)。它們三個屬性定義了一個動畫的軌跡,並且最少兩個值不可為空。
當設定了CABasicAnimation的起點與終點值後,中間的值都是通過插值方式計算出來的,插值計算是通過timingFunction來指定,timingFunction預設為空白,使用liner(勻速運動)。例如,當我們設定了一個position的動畫,設定了開始值PointA與結束值PointB,它們的運動先計算PointA與PointB的中間運動值PointCenter,而PointCenter是由timingFunction來指定值的,並且動畫預設是直線勻速運動的。
2)CAKeyFrameAnimation
CAKeyframeAnimation提供了通用的keyframe動畫功能層的屬性給我們使用,它允許我們設定一個特定的數組,這個數組是動畫在運動時的值。也就是說,CAKeyframeAnimation支援動畫的多個值設定。
CAKeyFrameAnimation可以用兩種方法定義:CGPath、數組values。
CGPath只對layer的anchorPoint或position屬性起作用。values比較靈活。keyTimes是一個選擇性參數,它可以定義keyframe的每個部分,其值是0.0到1.0。keyTimes數組中的每個時間值都對應values中的每一幀,當keyTimes沒有設定的時候,各個keyframe的時間是平分的。keyTimes數組中的每個元素定義了相應的keyframe的期間值作為動畫的總期間的一小部分,每個元素的值必須大於、或等於前一個值。
3.區別於聯絡
1)CABasicAnimation可看做是最多隻有2個主要畫面格的CAKeyframeAnimation