iPhone iPad 兼容模式下的应用横向布局奇怪(我强制纵向)

iPhone app on iPad compatibility mode has strange layout in landscape (while I force portrait)

问题

如您所见,我的 iPhone 应用在横向模式下以 iPad 启动时布局非常奇怪。我强制应用程序的方向为纵向,但只有在横向模式下的 iPad 上(当我启动应用程序时)似乎将视图在纵向容器中旋转 90 度。此外,状态栏似乎是一个黑条,位于屏幕中间。

当我从纵向模式启动时,该应用程序似乎可以正常运行。

在横向模式下使用 iPad 启动应用程序时

在纵向模式下使用 iPad 启动应用程序时

我的代码&配置

该应用程序在 info.plist 中启用了所有 4 个方向(因为我根据哪个 viewController 处于活动状态动态切换方向)。

我强制应用程序在第一个 viewController 中使用:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

我尝试将 shouldAutorotate 设置为 NO,但这没有任何区别。

我在 AppDelegate didFinishLaunchingWithOptions 中启动我的应用程序的方式是:

[[UIApplication sharedApplication] setStatusBarHidden:NO];

// 1
UIStoryboard *mainStoryboard = nil;
mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
// 2
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [mainStoryboard instantiateInitialViewController];
[self.window makeKeyAndVisible];
if ([self.window respondsToSelector:@selector(tintColor)]) {
    self.window.tintColor = [UIColor whiteColor];
}

奇怪的是,在 iPhone 上测试一切都 100% 正确。只有 iPad 兼容模式有这个问题。

问题

如何解决 iPad 兼容模式的方向问题?似乎我遗漏了一些只适用于 iPad 兼容模式的东西,因为 iPhone 不会发生这样的事情。

我在 Ashraf Tawfeeq 的帮助下解决了这个问题。我以前在 AppDelegate 的 didFinishLaunchingWithOptions 中还有代码,它可以为不同的设备切换情节提要文件。

我删除了相应的代码并将我应用程序 info.plist 中的 Main Interface 设置为我的故事板文件。

[[UIApplication sharedApplication] setStatusBarHidden:NO];

if ([self.window respondsToSelector:@selector(tintColor)]) {
    self.window.tintColor = [UIColor whiteColor];
}

现在,应用程序在 iPad 上启动时可以正确调整方向。