当我在 AppDelegate 中以编程方式创建一个 UINavigationController 时,作为根有一个嵌入式 UITabBarController,例如两个由标准 UIViewControllers 组成的简单选项卡,UIViewControllers 的视图似乎从导航栏向下移动了 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;
问题似乎与状态栏的高度有关,但是我不明白我做错了什么。但是,该问题并未出现在模拟器中,并且似乎仅在设备上运行时出现。此外,当您选择第二个选项卡时,视图似乎会移回其正常位置(与导航栏没有 20 像素的偏移)。
有没有人遇到过类似的问题和/或我做错了什么?