コアアニメーション(一)

2937 ワード

1.jpg
一、Core Animation概要
  • Core Animationは、中国語をコアアニメーションに翻訳し、非常に強力なアニメーション処理APIのセットであり、それを使用すると非常に鮮やかなアニメーション効果を得ることができ、多くの場合、半分の仕事をすることができます.すなわち,少量のコードを用いることで非常に強力な機能を実現できる.
  • Core Animationは、Mac OS XおよびiOSプラットフォームで使用できます.
  • Core Animationのアニメーション実行プロセスはバックグラウンドで動作し、メインスレッドをブロックしません.
  • 注意すべきことは、Core Animationは CALayer であり、UIViewではないことです.

  • 二、CAAnimationの継承関係
    Snip20150718_1.png
  • コアアニメーションのすべてのクラスはCAMediaTimingプロトコル
  • に準拠しています.
  • CAAnaimationは抽象的なクラスで、アニメーション効果を備えていないので、そのサブクラスでアニメーション効果が必要で、CAAnimationGroupCATransitionでアニメーション効果があります.
  • CAAnimationGroupは であり、を同時に行うことができる.
  • CATransitionは でいずれも回転場アニメーションが使用できます.

  • CAPropertyAnimationも抽象クラスであり、それ自体はアニメーション効果を備えておらず、サブクラスのみであり、CABasicAnimationCAKeyframeAnimation
  • CABasicAnimation 、いくつかの
  • をします
  • CAKeyframeAnimation 、いくつかの
  • をします
  • NSStringタイプのkeyPathプロパティがあります.CALayerのプロパティ名をkeyPathと指定し、CALayerのこのプロパティの値を変更して、対応するアニメーション効果を達成することができます.例えば、@"position"keyPathと指定すると、CALayerのposition属性の値が のアニメーション効果
  • に達するように修正される.
  • そのため、CAPropertyAnimationのサブクラスオブジェクトを初期化した後、keyPathを設定して、CALayerのどの属性を修正するか、どのようなアニメーションを実行するかを明らかにしなければなりません.

  • 三、ステップの追加
    (注意:Xcode 5以降はQuartzCore.frameworkフレームワークを追加したりメインヘッダファイルを導入したりする必要はありません)
  • 1.まず CALayer
  • 2.CAAnimationオブジェクトを初期化し、アニメーション関連プロパティ
  • を設定します.
  • 3.CALayerのaddAnimation:forKey:メソッドを呼び出すことで、CALayerにCAAnimationオブジェクトを追加し、
  • のアニメーションの実行を開始できます.
  • 4.CALayerのremoveAnimationForKey:メソッドを呼び出すことによって、 CALayerのアニメーション
  • を実行することができる.
    四、関連属性
  • duration:アニメーションの持続時間
  • repeatCount:繰り返し回数、 HUGE_VALFまたはMAXFLOAT
  • を設定することができる.
  • repeatDuration:繰返し時間
  • removedOnCompletion:デフォルトはYESで、アニメーションの実行が完了するとレイヤーから削除され、グラフィックはアニメーションの実行前の状態に戻ります. , NO,ただしfillModekCAFillModeForwards
  • とする.
  • fillMode:現在のオブジェクトの非active期間での動作を決定します.例えば、アニメーション開始前またはアニメーション終了後の
  • beginTime:アニメーションの遅延実行時間を設定できます.2 s遅延するには、CACurrentMediaTime()+2、CACurrentMediaTime()がレイヤーの現在の時間
  • に設定します.
  • timingFunction:速度制御関数、アニメーションの動作を制御するリズムdelegate:アニメーションエージェント
  • fillMode属性値( fillMode , removedOnCompletion = NO)
  • delegate:アニメーションエージェント、 エージェントオブジェクトの実装を必要とする方法は、
  • (これらの方法は分類に定義される)
    @interface NSObject (CAAnimationDelegate)
    //                
    - (void)animationDidStart:(CAAnimation *)anim;
    //                
    - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
    @end