4

UINavigationController1 つのビュー コントローラーからビューがぼかしで透明なビュー コントローラーへのカスタム プッシュ トランジション () を作成しています。

新しくプッシュされたView Controllerの下に「from」View Controllerが表示されたままになるようにします。

新しいView Controllerを(を使用して)モーダルに表示すると、この効果を達成できることはわかってmodalPresentationStyle = UIModalPresentationCustomいますが、ナビゲーションコントローラーでこれを行う方法はありますか?

私が直面している問題は、トランジションが行われた後、from ビュー コントローラーのビューがコンテナーから削除されていることです。

4

1 に答える 1

6

新しい iOS 7 移行 API を使用すると、アニメーションが終了すると containerView が非公開で管理されるため、fromViewController.view を toViewController.view の下に保持することはできません。

ただし、できることは次のようなものです...

UIView *containerView = [transitionContext containerView];

UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

UIView *snapshotView = [fromViewController.view snapshotViewAfterScreenUpdates:NO];

[toViewController.view addSubview:snapshotView];
[toViewController.view sendSubviewToBack:snapshotView];

最後の 2 行 (スナップショットを後ろに送る) がうまく機能するかどうかはよくわかりませんが、スナップショットを処理できるカスタム UIViewController サブクラスを使用して、それが残りのコンテンツの背後にあることを確認できます。


読み直した後..全画面表示ではなく、何らかの形式のモーダルを実現したい気がします...上記の解決策では、toViewControllerが全画面表示である必要があります...その後、子ビューコントローラーを追加できます実際にモーダルコンテンツを収容するtoViewControllerに?

于 2014-02-19T13:06:55.353 に答える