2016年7月6日水曜日

CoreAnimation Lesson.(Lesson2-2) - UIViewAnimationOptions/アニメーションイージングカーブ編

前回(Lesson2-1)ではブロックベースメソッドを使用した簡単なアニメーション実装について説明しました。引き続き、UIViewクラスのブロックベースアニメーションメソッドを使用したアニメーションについて説明していきます。

CoreAnimation Lesson.シリーズへのリンク。
アニメーションイージングカーブ
UIViewクラスのブロックベースアニメーションメソッド。
[Animating Views with Block Objects]
+ animateWithDuration:delay:options:animations:completion:
  1. class func animateWithDuration(_ duration: NSTimeInterval,
  2. delay delay: NSTimeInterval,
  3. options options: UIViewAnimationOptions,
  4. animations animations: () -> Void,
  5. completion completion: ((Bool) -> Void)?)

前回あまり詳しく説明出来なかった引数optionsについて説明します。 options引数は複数指定出来ますが、大きく3種類に分類することができて、

  • アニメーションの振る舞い
  • アニメーションイージングカーブ ←今回説明する部分
  • トランジションエフェクト

について設定出来ます。optionsの型は、UIViewAnimationOptionsとなっておりswiftだと構造体で、Objective-Cたと、emunで定義されている様です。 今回は、アニメーションイージングカーブについて説明します。

アニメーションイージングカーブは以下に示す4種類の設定が可能です。
UIViewAnimationOptions 概要
CurveEaseInOut ゆっくり始まって、加速して、ゆっくり止まる。
(デフォルト)
CurveEaseIn ゆっくり始まって、加速して急に止まる。
CurveEaseOut 急に始まり、ゆっくり止まる。
CurveLinear 初めから最後まで一定速度。
実装

基本的には以下に示す基本的なブロックベースアニメーションメソッドを使用します。以下は例としてoptionにCurveEaseInOutを指定しています。

  1. // EaseInOut
  2. let option:UIViewAnimationOptions = .CurveEaseInOut
  3. UIView.animateWithDuration(duration, delay: delay, options: option, animations: {
  4. // animation
  5. self.myView.frame.origin.y = topBarHeight + 50
  6. }) { (complete) in
  7. NSLog("animation completed.")
  8. // アニメーション完了時の処理
  9. self.myView.backgroundColor = UIColor.redColor()
  10.  
  11. }

それでは実際に動かしてみましょう。

UIViewAnimationOptions.CurveLinear

UIViewAnimationOptions.CurveLinearは、はじめから最後まで一定速度のアニメーション。

図.Linearアニメーションカーブ
図.UIViewAnimationOptions.CurveLinear
UIViewAnimationOptions.CurveEaseInOut

UIViewAnimationOptions.CurveEaseInOutは、ゆっくり始まって、加速して、ゆっくり止まります。Linear指定との違いをわかりやすくするため、右側の図では、左側にLinearを指定したもの、右側にEaseInOutを指定したViewをアニメーションしています。

図.EaseInOutアニメーションカーブ
図.UIViewAnimationOptions.CurveEaseInOut
UIViewAnimationOptions.CurveEaseIn

UIViewAnimationOptions.CurveEaseInは、ゆっくり始まって、加速して急に止まります。右側の図では左側にLinearを指定し、左側にEaseInを指定したアニメーションです。

図.EaseInアニメーションカーブ
図.UIViewAnimationOptions.CurveEaseIn
UIViewAnimationOptions.CurveEaseOut

UIViewAnimationOptions.CurveEaseOutは、急に始まり、ゆっくり止まります。右側の図では左側にLinearを指定し、左側にEaseOutを指定したアニメーションです。

図.EaseOutアニメーションカーブ
図.UIViewAnimationOptions.CurveEaseOut

サンプルプログラムはGitHubにあります。https://github.com/takuran/CoreAnimationLesson

CoreAnimation Lesson.シリーズへのリンク。

0 件のコメント :

コメントを投稿