私はジレンマを抱えています。ユーザーに半透明のビューを提示したいと思います。
実験して、透明ビューをNavigationControllerのスタックの一番上にプッシュしただけでは、必要な透明レベルがレンダリングされないことがわかりました。そこで、スタックの一番上にある現在のビューのサブビューとしてビューを追加することにしました。
このソリューションは機能し、下のビューは引き続き表示され、ビューは「セミモーダル」です。問題は、親ビューがUITableViewControllerを継承している場合(私のように)、そのビューに「プッシュ」すると、上部のナビゲーションバーがカバーされないことです。
このビューを押すたびにナビゲーションバーのコントロールを有効/無効にする必要がある状況に陥りたくないので、ビューを表示するために使用できるソリューションを誰かが知っているかどうか疑問に思いましたUITableViewControllerにプッシュすると、実際にはナビゲーションバーが「プッシュオーバー」されますか?
iOS8はUIModalPresentationOverFullScreen
プレゼンテーションスタイル を追加しました。これを提示されたビューコントローラの modalPresentationStyle
として設定します。より高度なニーズについては、カスタム プレゼンテーションコントローラー の作成を検討してください。
IOS7カスタムトランジションを使用してこれを実現する方法があります。
MyController * controller = [MyController new];
[controller setTransitioningDelegate:self.transitionController];
controller.modalPresentationStyle = UIModalPresentationCustom;
[self controller animated:YES completion:nil];
カスタムトランジションを作成するには、次の2つが必要です。
<UIViewControllerTransitionDelegate>
の実装)<UIViewControllerAnimatedTransitioning>
を実装)このチュートリアルでカスタムトランジションの詳細を見つけることができます: http://www.doubleencore.com/2013/09/ios-7-custom-transitions/
これを試して:
ViewController *vc = [[ViewController alloc] init];
[vc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[self presentViewController:vc animated:YES completion:nil];