UIViewアニメーション、CABasicAnimation、UIViewPropertyAnimatorをいつ使用するのですか?

ラージ

どのシナリオでそれらのいずれかを最適なものとして使用する必要があるのか​​知りたいですか?

次のブログhttps://www.hackingwithswift.com/ios10で、「アニメーションの再検討」セクションに書かれた例で、「CABasicAnimation」を使用して同じ要件を再適用できますか?つまり、アニメーションの一時停止と再開を意味しますか?

私が収集したものから、UIView.animate(...)メソッドを使用すると、voidが返されるため、アニメーションが完了する前にアニメーションを制御できなくなります。これにより、処理する戻り値が得られません。 UIViewPropertyAnimatorを取得すると(ここでも、アニメーションの進行状況を確認するための「isRunning」があります。)CABasicAnimationでも、アニメーションを実行するための進行状況チェックはありません。私の仮定が間違っている場合は私を訂正してください。ありがとうございました。

ダニエル・ラーソン

TLDR

  • UIViewのアニメーションメソッドを使用すると、コードのフットプリントをほとんど使用せずに、UIViewプロパティの簡単で基本的なアニメーションを作成できます。
  • Core Animationを使用すると、下にあるレイヤーのプロパティをアニメーション化できます。
  • UIViewPropertyAnimatorを使用すると、UIViewプロパティの複雑で動的なアニメーションを作成できます。

バックグラウンド

これらのAPIはすべて優れており、ユースケースもわずかに異なります。それらに入る前に、それを理解するのは良いことです

  1. iOSのすべてのアニメーションは、CoreAnimationを使用して実行されます。UIKitのブロックベースのアニメーションメソッドは、単に便利な機能です。
  2. UIKitとCoreAnimationはどちらもアニメーションのサポートを提供しますが、ビュー階層のさまざまな部分にアクセスできます。

UIKitでは、アニメーションはUIViewオブジェクトを使用して実行されます。UIKitを使用したアニメーションで使用できるプロパティは次のとおりです。

  • frame
  • bounds
  • center
  • transform
  • alpha
  • backgroundColor
  • contentStretch

Core Animationは、ビューの基になるレイヤーへのアクセスを提供し、以下に概説するように異なるプロパティのセットを公開します(ビューとレイヤーは複雑にリンクされているため、ビューのレイヤーへの変更はビュー自体に影響します)。

  • レイヤーのサイズと位置
  • 変換を実行するときに使用される中心点
  • 3D空間でのレイヤーまたはそのサブレイヤーへの変換
  • レイヤー階層からのレイヤーの追加または削除
  • 他の兄弟レイヤーに対するレイヤーのZオーダー
  • レイヤーの影
  • レイヤーの境界線(レイヤーの角が丸いかどうかを含む)
  • サイズ変更操作中に伸びるレイヤーの部分
  • レイヤーの不透明度
  • レイヤーの境界の外側にあるサブレイヤーのクリッピング動作
  • レイヤーの現在の内容
  • レイヤーのラスタライズ動作

詳細については、このAppleDeveloperドキュメント参照しください


UIViewのアニメーションメソッド

私の意見では、これらはまだ最も使いやすいです。コードフットプリントを大きくしすぎない、非常に単純なAPI。これは、単純なファイアアンドフォーゲットアニメーション(選択時にボタンをポップにするなど)、またはキーフレームのサポートが優れているため複雑なキーフレームアニメーションを作成する場合に使用します。

例:

UIView.animate(withDuration: 0.5, delay: 0.0, options: .curveEaseOut, animations: {
    button.transform = .init(scaleX: 1.1, y: 1.1)
}

CoreAnimation

使用するのは少し簡単ではないかもしれませんが、前述のように、ビュープロパティではなくレイヤープロパティをアニメーション化する場合はいつでも必要ですこれらの例は、コーナー半径、シャドウ、および境界線です。

例:

CATransaction.begin()
CATransaction.setAnimationDuration(0.5)
CATransaction.timingFunction = .init(name: .easeOut)

let cornerAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.cornerRadius))
cornerAnimation.fromValue = 0.0
cornerAnimation.toValue = 10.0
button.layer.add(cornerAnimation, forKey: #keyPath(CALayer.cornerRadius))

CATransaction.commit()

Core Animationの詳細については、これはすばらしい記事です(私が書いたものではありません)。


UIViewPropertyAnimator

iOS 10で追加されました。名前が示すように、これは別のビューベースのアニメーションAPIです。UIViewのアニメーションメソッドとは異なる点がいくつかあります。主なものは、インタラクティブアニメーションをサポートし、アニメーションを動的に変更できることです。アニメーションを一時停止、巻き戻し、またはスクラブしたり、外出先でアニメーションブロックを追加したり、再生中にアニメーションを反転したりできるため、非常に強力です。これは、アニメーションをユーザーが制御できるようにする場合に使用します。スクラブfractionCompleteは、アニメーターオブジェクトにプロパティを設定することで機能します。このプロパティは、パンジェスチャ認識機能または感圧タッチ認識機能(またはKVOを使用するキー)に簡単に接続できます。

前述のように、への参照を保存UIViewPropertyAnimatorし、アニメーション中にそのアニメーションまたは完了ブロックを変更することもできます

例:

// Create an animation object with an initual color change animation
let animator = UIViewPropertyAnimator(duration: duration, curve: .linear) {
    button.backgroundColor = .blue
}

// At any point during the runtime, we can amend the list of animations like so
animator.addAnimations {
    button.transform = .init(scaleX: 1.1, y: 1.1)
}

animator.startAnimation()

}

注目すべきは、あなたが実際に使用できるということですUIView.animateし、UIView.animateKeyframesあなたの内からUIViewPropertyAnimatorアニメーションブロックは、両方を使用する必要性を感じなければなりません。

のより詳細な例が必要な場合はUIViewPropertyAnimatorここに小さなチュートリアルを作成しました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

UIViewPropertyAnimatorを使用してUIViewのアルファを順番にアニメーション化する

分類Dev

CABasicAnimationは2つのアニメーションを実行しているようです

分類Dev

UIViewPropertyAnimatorを使用してタッチでアニメーションを中断する

分類Dev

UIViewPropertyAnimatorで繰り返しアニメーション化するアニメーションを作成するにはどうすればよいですか?

分類Dev

QuartzCoreのアニメーションを停止する方法-CABasicAnimation

分類Dev

uiviewアニメーションで配列を使用する方法

分類Dev

アニメーションがオンのときにCABasicAnimationのtoValue / fromValueを変更するにはどうすればよいですか

分類Dev

UIViewPropertyAnimatorを使用してビューレイヤーの影をアニメーション化する方法

分類Dev

UIViewプロパティを設定すると、同じプロパティでUIViewPropertyAnimatorを使用して開始された既存のアニメーションが明示的に停止/終了しますか

分類Dev

CALayerプロパティとUIViewをUIViewPropertyAnimatorで同期的にアニメーション化します

分類Dev

UIViewPropertyAnimator-特定のアニメーションではなく、単にすべてのアニメーションを停止しますか?

分類Dev

Angular 2アニメーションvs CSSアニメーション-何をいつ使うのですか?

分類Dev

Angular 2アニメーションvs CSSアニメーション-何をいつ使うのですか?

分類Dev

Angular 2アニメーションvs CSSアニメーション-何をいつ使うのですか?

分類Dev

アニメーションの概念を使用して、iOSで1つのUIviewを別のUIviewにプッシュする方法は?

分類Dev

UIViewバウンスアニメーションを作成するにはどうすればよいですか?

分類Dev

UIViewはいくつかのオブジェクトでアニメーション化します

分類Dev

UIViewAnimationOptionRepeat UIViewアニメーションを停止するにはどうすればよいですか?

分類Dev

UIViewアニメーションの代わりにCABasicAnimation

分類Dev

背景をぼかすためにUIViewPropertyAnimatorのfractionCompleteをアニメーション化します

分類Dev

UIViewの終了をアニメーション化する

分類Dev

UIViewの色をアニメーション化する

分類Dev

角度4の異なるdivで1つのアニメーションを使用する方法は?出来ますか?

分類Dev

別のビューでUIViewをアニメーション化する

分類Dev

複数のアニメーション関数を使用してmatplotlibアニメーションを作成するにはどうすればよいですか

分類Dev

別のすごいアニメーションを使用するにはどうすればよいですか

分類Dev

パンの方向に応じて動きをアニメーション化するUIViewPropertyAnimator

分類Dev

animate.cssを使用して1つのhtmlタグに2つのアニメーションを追加するにはどうすればよいですか?

分類Dev

gifアニメーションをpaintComponent()で使用するとアニメーションにならないのはなぜですか?

Related 関連記事

  1. 1

    UIViewPropertyAnimatorを使用してUIViewのアルファを順番にアニメーション化する

  2. 2

    CABasicAnimationは2つのアニメーションを実行しているようです

  3. 3

    UIViewPropertyAnimatorを使用してタッチでアニメーションを中断する

  4. 4

    UIViewPropertyAnimatorで繰り返しアニメーション化するアニメーションを作成するにはどうすればよいですか?

  5. 5

    QuartzCoreのアニメーションを停止する方法-CABasicAnimation

  6. 6

    uiviewアニメーションで配列を使用する方法

  7. 7

    アニメーションがオンのときにCABasicAnimationのtoValue / fromValueを変更するにはどうすればよいですか

  8. 8

    UIViewPropertyAnimatorを使用してビューレイヤーの影をアニメーション化する方法

  9. 9

    UIViewプロパティを設定すると、同じプロパティでUIViewPropertyAnimatorを使用して開始された既存のアニメーションが明示的に停止/終了しますか

  10. 10

    CALayerプロパティとUIViewをUIViewPropertyAnimatorで同期的にアニメーション化します

  11. 11

    UIViewPropertyAnimator-特定のアニメーションではなく、単にすべてのアニメーションを停止しますか?

  12. 12

    Angular 2アニメーションvs CSSアニメーション-何をいつ使うのですか?

  13. 13

    Angular 2アニメーションvs CSSアニメーション-何をいつ使うのですか?

  14. 14

    Angular 2アニメーションvs CSSアニメーション-何をいつ使うのですか?

  15. 15

    アニメーションの概念を使用して、iOSで1つのUIviewを別のUIviewにプッシュする方法は?

  16. 16

    UIViewバウンスアニメーションを作成するにはどうすればよいですか?

  17. 17

    UIViewはいくつかのオブジェクトでアニメーション化します

  18. 18

    UIViewAnimationOptionRepeat UIViewアニメーションを停止するにはどうすればよいですか?

  19. 19

    UIViewアニメーションの代わりにCABasicAnimation

  20. 20

    背景をぼかすためにUIViewPropertyAnimatorのfractionCompleteをアニメーション化します

  21. 21

    UIViewの終了をアニメーション化する

  22. 22

    UIViewの色をアニメーション化する

  23. 23

    角度4の異なるdivで1つのアニメーションを使用する方法は?出来ますか?

  24. 24

    別のビューでUIViewをアニメーション化する

  25. 25

    複数のアニメーション関数を使用してmatplotlibアニメーションを作成するにはどうすればよいですか

  26. 26

    別のすごいアニメーションを使用するにはどうすればよいですか

  27. 27

    パンの方向に応じて動きをアニメーション化するUIViewPropertyAnimator

  28. 28

    animate.cssを使用して1つのhtmlタグに2つのアニメーションを追加するにはどうすればよいですか?

  29. 29

    gifアニメーションをpaintComponent()で使用するとアニメーションにならないのはなぜですか?

ホットタグ

アーカイブ