平成30年4月21日(土曜日)
カスタム表示の場合、独自の Presentation Controller を用意して、表示された View Controller にカスタムの外観を付与できます。Presentation Controller は、View Controller とそのコンテンツとは別個のカスタムクロムを管理できます。たとえば、View Controller のビューの背後に配置された淡色表示のビューは、Presentation Controller により管理されます。
View Controller の表示スタイルを UIModalPresentationCustom に設定し、適切な遷移デリゲートを提供すると、UIKit はカスタム Presentation Controller 代わりに使用します。
カスタムビューは、presentationTransitionWillBegin メソッドを使用して画面にアニメーション化します。このメソッドでは、カスタムビューを設定し、それらをコンテナビューに追加します。表示される View Controller か表示中の View Controller のトランジションコーディネータを使用してアニメーションを作成します。
。アニメーターオブジェクトは、表示されるViewControllerを、frameOfPresentedViewInContainerViewメソッドから返す四角形フレームにアニメーション化する責任を負っています。
UIPresentationController{
override func containerViewWillLayoutSubviews() {
presentedView?.frame = frameOfPresentedViewInContainerView
}
}
View Controller を表示するときは、そのビューをコンテナビューのサブビューとして追加します。コンテナビューは、ウィンドウまたは通常のビューのことがありますが、常にアニメーションを実行するように設定されています
カスタムアニメーションを使用して View Controller を表示する
カスタムアニメーションを使用して View Controller を表示するには、既存の View Controller のアクションメソッドで次の手順を実行します。
表示する View Controller を作成します。
カスタム遷移デリゲートオブジェクトを作成し、View Controller の transitioningDelegate(UIViewControllerAnimatedTransitioning) プロパティに割り当てます。
遷移デリゲートのメソッドは、カスタムアニメータオブジェクトを作成して、求められたときに返す必要があります。
presentViewController:animated:completion: メソッドを呼び出して View Controller を表示します。
presentViewController:animated:completion: メソッドを呼び出すと、UIKit は表示プロセスを初期化します。表示は、次の実行ループ反復時に開始され、カスタムアニメーターが completeTransition: メソッドを呼び出すまで続きます。インタラクティブ遷移では、遷移の進行中にタッチイベントを処理することができますが、非インタラクティブ遷移はアニメーターオブジェクトにより指定された持続期間に実行されます。