只有横向支持的界面方向的视图以纵向

时间:2017-01-30 23:42:42

标签: ios objective-c iphone

我的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

帮助!!!这个违背了所有常识逻辑!

0 个答案:

没有答案