我希望我的应用程序能够在iPad和iPhone上同时兼容。它的根视图控制器是tabbarController。
在iPad上,我需要它可以在横屏和竖屏模式下使用。 在iPhone上,我需要根视图控制器始终为竖屏,并且我有一些视图控制器被呈现在tabbarController上,这些视图控制器需要在横屏和竖屏模式下都可用(例如,一个用于播放YouTube视频的视图控制器)。因此,我通过以下方式锁定了tabbarController的旋转(在UITabbarController子类中)。
我打算通过锁定rootViewController(tabbarController)的旋转,来锁定tabbarController中的所有VC(仅在iPhone上),并且位于tabbarController之上的视图可以根据设备方向旋转。
问题:
一切都按预期工作,直到在iPhone上以横向模式启动应用程序。在横向模式下启动应用程序时,应用程序默认为横向模式,这不是预期的。即使设备方向为横向,它也应该在纵向模式下启动。因为我关闭了iPhone的自动旋转,所以应用程序仍然处于横向模式,导致出现错误。我尝试了在application:didFinishLaunchingWithOptions:中强制应用程序以纵向模式启动的方法。
在iPad上,我需要它可以在横屏和竖屏模式下使用。 在iPhone上,我需要根视图控制器始终为竖屏,并且我有一些视图控制器被呈现在tabbarController上,这些视图控制器需要在横屏和竖屏模式下都可用(例如,一个用于播放YouTube视频的视图控制器)。因此,我通过以下方式锁定了tabbarController的旋转(在UITabbarController子类中)。
# pragma mark - UIRotation Methods
- (BOOL)shouldAutorotate{
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
}
- (NSUInteger)supportedInterfaceOrientations{
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskPortrait;
}
我打算通过锁定rootViewController(tabbarController)的旋转,来锁定tabbarController中的所有VC(仅在iPhone上),并且位于tabbarController之上的视图可以根据设备方向旋转。
问题:
一切都按预期工作,直到在iPhone上以横向模式启动应用程序。在横向模式下启动应用程序时,应用程序默认为横向模式,这不是预期的。即使设备方向为横向,它也应该在纵向模式下启动。因为我关闭了iPhone的自动旋转,所以应用程序仍然处于横向模式,导致出现错误。我尝试了在application:didFinishLaunchingWithOptions:中强制应用程序以纵向模式启动的方法。
#pragma mark - Rotation Lock (iPhone)
- (void)configurePortraitOnlyIfDeviceIsiPhone{
if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone))
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
}
问题仍然存在。 我已经在info.plist的SupportedInterfaceOrientaions键上为iPad和iPhone允许了所有方向选项,因为即使只有少数viewControllers需要,在iPhone上我需要应用程序处于横向状态。 如果可以通过某种方式强制该应用程序在纵向方向启动,即使设备方向为横向,就可以解决此问题。 如果我的逻辑有误,请纠正我,如果没有,任何帮助使应用程序以纵向模式启动都将不胜感激。
谢谢