我的iOS应用程序中的上一个屏幕(用户注册表单)只是肖像,我有另一个屏幕(图片库),它应该只是横向,因此我的项目的Xcode设置支持纵向,横向左侧和横向对(右???)。
然而,前一个屏幕(用户注册表格)应该只是肖像(虽然这一直是这种情况),并且当前屏幕(图库)应该只是风景(我的意思是横向左侧和风景对 - 即使在开始时也从不画像。
因此,我将这些重写的方法添加到我当前屏幕的视图控制器中,如下所示:
- (NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscape; }
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; }
- (BOOL)shouldAutorotate { return YES; }
乍一看,这可能看起来像一个非常可靠的解决方案。实际上,这就是所有文档和Stack Overflow建议所说的应该做的事情(包括官方Apple技术说明2244)。这还不够。 :(
从前一个屏幕(WAS肖像)过渡意味着我们以纵向显示这个新的视图控制器,因此即使唯一的“支持的界面方向”是横向的,当前屏幕也是纵向的。它应该是风景,即使用户垂直握住他们的手机纵向,以鼓励他们切换到横向(图像库看起来非常UGLY和纵向无法使用 - 它应该只在横向模式下显示。)
要明确的是,图像库和用户注册表单视图控制器都是根视图控制器,如下所示:
- (void)presentGalleryViewController {
[self.window setRootViewController:self.galleryViewController];
[self.window makeKeyAndVisible];
}
- (void)presentUserRegistrationFormViewController {
[self.window setRootViewController:self.userRegistrationFormViewController];
[self.window makeKeyAndVisible];
}
如何强制这个新的视图控制器以其中一个横向方向启动,鼓励用户将手机转为IRL?
由于这里有大量相互矛盾且相互矛盾的信息,有关哪些方法可以覆盖等等,这一点真的不清楚。
我们假设iOS 8是我们正在使用的最早的版本。
其他说明:
也许我遇到了以下的UIKit回归? http://petersteinberger.com/blog/2015/rotation-multiple-windows-bug/ https://gist.github.com/steipete/8df39fea0d39680a7a6b
帮助!!!这个违背了所有常识逻辑!