プログラムで AppDelegate 内に UINavigationController を作成し、たとえば標準の UIViewController で構成される 2 つの単純なタブを持つ組み込みの UITabBarController をルートとして持つと、UIViewController のビューがナビゲーション バーから 20 ピクセル下にずれているように見えます。ナビゲーション バーの下部とビューの上部の間の 20 ピクセルのギャップ。
このコードは、AppDelegate didFinishLaunchingWithOptions 関数に次のコードのみを含む単純な空のアプリケーションです。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController* vc1 = [[UIViewController alloc] init];
vc1.view.backgroundColor = [UIColor blueColor];
UIViewController* vc2 = [[UIViewController alloc] init];
vc2.view.backgroundColor = [UIColor redColor];
UITabBarController* tabBarController = [[UITabBarController alloc] init];
[tabBarController setViewControllers:[NSArray arrayWithObjects:vc1, vc2, nil]
animated:YES];
UINavigationController* navigationController = [[UINavigationController alloc]
initWithRootViewController:tabBarController];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
問題はステータスバーの高さに関連しているようですが、何が間違っているのかわかりません。ただし、問題はシミュレーターには表示されず、デバイスで実行している場合にのみ表示されるようです。また、2 番目のタブを選択すると、ビューが通常の位置に戻ったように見えます (ナビゲーション バーからの 20 ピクセルのオフセットなし)。
誰かが同様の問題を経験したことがありますか、そして/または私が間違っていることがありますか?