カスタム遷移の流れ
animationControllerForPresentedController:presentingController:sourceController:
UIKitが表示されたVCがtransitioningDelegateを持っていると聞いてくる。
そこで適切なアニメータを作って返す。
interactionControllerForPresentation
次にUIKitは操作可能アニメータが取得できるか聞いてくる。操作可能なものでなければnilを返しても良い。
アニメータのtransitionDuration
次にUIKitはアニメータにtransitionDurationを聞く。
アニメーション開始
非操作系の場合
アニメータのanimateTransitionが呼ばれる。
操作系の場合
操作可能アニメータのstartInteractiveTransitionが呼ばれる。
completeTransition
UIKitはコンテキスト遷移オブジェクトのcompleteTransitionが呼ばれるのを待つ。
presentViewController:animated:completion:
の完了ハンドラーが呼ばれる。
そこでアニメータのanimationEnded:呼べる。
消去のときは?
- animationControllerForDismissedController: アニメーター返す
- interactionControllerForDismissal: 操作可能アニメータ返す(nil可)
- transitionDuration:
- 非操作系 animateTransition:呼ばれる
- 操作系 startInteractiveTransition:呼ばれる
- completeTransition: 待ち
- presentViewController:animated:completion:のcompletion: 呼ばれる。