iOS 8模态视图不正确的方向

时间:2014-12-25 12:17:34

标签: ios iphone xcode ios8 uiinterfaceorientation

我的应用程序配置为仅限肖像。 我想要自动旋转的只有两个视图。 因此,在申请代表中,我已经覆盖了以下功能:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskAll;
}

我的所有观点都继承了一个视图,其中我重写了以下功能:

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{    
    return UIInterfaceOrientationPortrait;
}

这样我就可以将所有视图保持为纵向。

在我想要自动旋转的两个视图中,我覆盖了以下方法:

- (BOOL)shouldAutorotate
{
    return YES;
}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown | UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}

这也符合预期。

然而,以模式方式显示的视图正在以设备方向打开 - 如果我将设备旋转到横向并以模态方式打开视图,即使它继承主视图并且不覆盖这些方法,也会获得横向布局。

2 个答案:

答案 0 :(得分:0)

为此找到了理由和解决方案。

我的视图由UINavigationController管理,因此需要对其进行子类化并以完全相同的方式覆盖上述所有功能。

答案 1 :(得分:-1)

您的纵向视图应自动旋转,但仅限于纵向:

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}