Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

カスタム遷移の流れ

animationControllerForPresentedController:presentingController:sourceController:

UIKitが表示されたVCがtransitioningDelegateを持っていると聞いてくる。
そこで適切なアニメータを作って返す。

interactionControllerForPresentation

次にUIKitは操作可能アニメータが取得できるか聞いてくる。操作可能なものでなければnilを返しても良い。

アニメータのtransitionDuration

次にUIKitはアニメータにtransitionDurationを聞く。

アニメーション開始

非操作系の場合

アニメータのanimateTransitionが呼ばれる。

操作系の場合

操作可能アニメータのstartInteractiveTransitionが呼ばれる。

completeTransition

UIKitはコンテキスト遷移オブジェクトのcompleteTransitionが呼ばれるのを待つ。

presentViewController:animated:completion:

の完了ハンドラーが呼ばれる。
そこでアニメータのanimationEnded:呼べる。

消去のときは?

  1. animationControllerForDismissedController: アニメーター返す
  2. interactionControllerForDismissal: 操作可能アニメータ返す(nil可)
  3. transitionDuration:
  4. 非操作系 animateTransition:呼ばれる
  5. 操作系 startInteractiveTransition:呼ばれる
  6. completeTransition: 待ち
  7. presentViewController:animated:completion:のcompletion: 呼ばれる。