別のビュー コントローラ (たとえば、別のビュー コントローラをモーダルに表示するビュー コントローラを含むタブ バー コントローラ) 内に含まれるビュー コントローラ内からビューをモーダルに表示しようとしています。
次のような階層:
View Controller 1
view 1 (belonging to view controller 1)
view 2 (belonging to view controller 2)
-> presented view 3 (belonging to view controller 3)
私が抱えている問題は、iPadでは、提示されたView Controllerがステータスバーの下に表示され、提示中のView Controllerがステータスバーの後ろに表示されたままになることです。ビューを画面全体に表示し、ステータス バーの後ろに配置します。
奇妙なことに、View Controller 1 からモーダルを表示すると正常に動作し、View Controller 2 から表示しようとするとこの問題が発生します。
もう1つの奇妙な点は、同じコードをiphoneシミュレーターで実行しても問題はなく、期待どおりに動作しますが、ipad simで実行すると、この問題が発生することです。
例えば:
赤いビューはビュー コントローラ 2 に属するビューで、緑はビュー コントローラ 3 に属するビューです。
ご覧のとおり、iPhone ではビュー コントローラー 3 が画面全体をカバーしていますが、iPad ではステータス バーの下に配置されています。
これをテストするには、xcode で新しいシングル ビュー ユニバーサル プロジェクトを作成し、作成したビュー コントローラーの viewDidAppear メソッドに次のコードを追加して、iPhone および iPad シミュレーターで実行します。
-(void)viewDidAppear:(BOOL)animated
{
UIViewController *vc1 = [UIViewController new];
vc1.view.backgroundColor = [UIColor redColor];
[self.view addSubview:vc1.view];
UIViewController *vc2 = [UIViewController new];
vc2.view.backgroundColor = [UIColor greenColor];
[vc1 presentViewController:vc2 animated:YES completion:nil];
}
誰でも何か考えがありますか?りんごの移行ガイドに従って、新しいedgeForExtendedLayoutプロパティなどのすべての組み合わせを試しました。vc2 に何も追加しないようにする必要があります。
ここでは、モーダルを提示するタブバー アプリケーションとモーダルを提示する非タブバー プロジェクトの違いを示す2 つのサンプル プロジェクトを作成しました。どちらも同じ方法でセットアップされ、3 つのビュー コントローラーが使用されます。
iphone と ipad で違うのはおかしいと思います。
オリ