Skip to content

Latest commit

 

History

History
30 lines (22 loc) · 2.62 KB

README.md

File metadata and controls

30 lines (22 loc) · 2.62 KB

遷移アニメーションの超基本

参考資料

View Controller Programming Guide for iOS 「トランジションアニメーションをカスタマイズする」

遷移アニメーションの概要説明

画面遷移アニメーションを実装するにはまず、UIViewControllerTransitioningDelegateプロトコルに準拠した遷移デリゲートを実装する。

遷移デリゲートは、画面遷移が発生するときに、UIKitに対して以下のオブジェクトを提供する。

  • アニメーターオブジェクト
  • インタラクティブアニメーターオブジェクト
  • Presentation Controller

遷移先のビューコントローラのtransitioningDelegateプロパティに遷移デリゲートインスタンスを渡すと、画面遷移時に遷移デリゲートによるアニメーションが実行される。

アニメーションのロジック

遷移元ビューコントローラのpresent(_:animated:completion:)を呼び出すと、遷移デリゲートのanimationController(forPresented:presenting:source:)が呼ばれ、アニメーターオブジェクトが取得される。
アニメーターオブジェクトがnilでなければ、以下のステップを実行する。

  • 遷移デリゲートのinteractionControllerForPresentation(using:)を呼び出し、インタラクティブアニメーターオブジェクトが利用可能かどうか確認する
    • インタラクティブアニメーターオブジェクトがnilであれば、ユーザ操作なしでアニメーションを開始する
  • アニメーターオブジェクトのtransitionDuration(using:)を呼び出し、アニメーションの持続時間を取得する
  • インタラクティブアニメーターオブジェクトがnilかどうかで分岐
    • nilであれば、アニメーターオブジェクトのanimateTransition(using:)を呼び出す
    • nilでなければ、インタラクティブアニメーターのstartInteractiveTransition(_:)を呼び出す
  • UIKitはアニメーターオブジェクトがコンテキスト遷移オブジェクトのcompleteTransition(_:)を呼び出すのを待ってから、遷移元ビューコントローラのpresent(_:animated:completion:)の完了ハンドラを呼び出す
  • 最後に、アニメーターオブジェクトのanimationEnded(_:)が呼ばれる

simple-animation.gif