前回(Lesson2-1)ではブロックベースメソッドを使用した簡単なアニメーション実装について説明しました。引き続き、UIViewクラスのブロックベースアニメーションメソッドを使用したアニメーションについて説明していきます。
CoreAnimation Lesson.シリーズへのリンク。- Core Animation Lesson.(Lesson1) - UIViewとCALayer
- Core Animation Lesson.(Lesson1-4〜1-6) - CALayerクラスのプロパティ
- Core Animation Lesson.(Lesson1-7) - カスタム描画
- Core Animation Lesson.(Lesson2-1) - 基本のアニメーション
[Animating Views with Block Objects] + animateWithDuration:delay:options:animations:completion:
- class func animateWithDuration(_ duration: NSTimeInterval,
- delay delay: NSTimeInterval,
- options options: UIViewAnimationOptions,
- animations animations: () -> Void,
- completion completion: ((Bool) -> Void)?)
前回あまり詳しく説明出来なかった引数optionsについて説明します。 options引数は複数指定出来ますが、大きく3種類に分類することができて、
- アニメーションの振る舞い
- アニメーションイージングカーブ ←今回説明する部分
- トランジションエフェクト
について設定出来ます。optionsの型は、UIViewAnimationOptionsとなっておりswiftだと構造体で、Objective-Cたと、emunで定義されている様です。 今回は、アニメーションイージングカーブについて説明します。
アニメーションイージングカーブは以下に示す4種類の設定が可能です。UIViewAnimationOptions | 概要 |
CurveEaseInOut | ゆっくり始まって、加速して、ゆっくり止まる。 (デフォルト) |
CurveEaseIn | ゆっくり始まって、加速して急に止まる。 |
CurveEaseOut | 急に始まり、ゆっくり止まる。 |
CurveLinear | 初めから最後まで一定速度。 |
基本的には以下に示す基本的なブロックベースアニメーションメソッドを使用します。以下は例としてoptionにCurveEaseInOutを指定しています。
- // EaseInOut
- let option:UIViewAnimationOptions = .CurveEaseInOut
- UIView.animateWithDuration(duration, delay: delay, options: option, animations: {
- // animation
- self.myView.frame.origin.y = topBarHeight + 50
- }) { (complete) in
- NSLog("animation completed.")
- // アニメーション完了時の処理
- self.myView.backgroundColor = UIColor.redColor()
- }
それでは実際に動かしてみましょう。
UIViewAnimationOptions.CurveLinearは、はじめから最後まで一定速度のアニメーション。
UIViewAnimationOptions.CurveEaseInOutは、ゆっくり始まって、加速して、ゆっくり止まります。Linear指定との違いをわかりやすくするため、右側の図では、左側にLinearを指定したもの、右側にEaseInOutを指定したViewをアニメーションしています。
UIViewAnimationOptions.CurveEaseInは、ゆっくり始まって、加速して急に止まります。右側の図では左側にLinearを指定し、左側にEaseInを指定したアニメーションです。
UIViewAnimationOptions.CurveEaseOutは、急に始まり、ゆっくり止まります。右側の図では左側にLinearを指定し、左側にEaseOutを指定したアニメーションです。
サンプルプログラムはGitHubにあります。https://github.com/takuran/CoreAnimationLesson
- Core Animation Lesson.(Lesson1) - UIViewとCALayer
- Core Animation Lesson.(Lesson1-4〜1-6) - CALayerクラスのプロパティ
- Core Animation Lesson.(Lesson1-7) - カスタム描画
- Core Animation Lesson.(Lesson2-1) - 基本のアニメーション