1

我知道这是最常被问到的问题,相信我,我已经尝试了各种组合来实现这一点,并且浏览了这里关于堆栈溢出的大多数帖子。

我有一个名为 v1ViewController 的 UINavigationController ,我想要做的是当它显示给用户时,我只想让它以纵向或纵向上下模式显示,即使用户旋转设备也没有横向景观它不应该做任何事情。

注意:我确实在 Xcode 中突出显示了支持界面方向的所有选项,因为在我的其他视图控制器之一中,我需要在横向和纵向模式下向用户展示一些东西,但是对于这个 UINav Conrtoller,我希望它只保持纵向模式。

我为 iOS 5.0 编写的代码可以正常工作,没有问题。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if (interfaceOrientation == UIInterfaceOrientationPortrait)
    {
        return YES;
    }
    else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

我的头疼是 iOS 6。无论我尝试做什么,它仍然让用户在横向旋转血腥的东西(见代码和截图)

// *********************
// iPhone 5 orientation support
// *********************
- (BOOL)shouldAutorotate
{

    UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];


    if (interfaceOrientation == UIInterfaceOrientationPortrait)
    {
        return YES;
    }
    else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}


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

在此处输入图像描述 在此处输入图像描述

4

1 回答 1

3

您需要确保覆盖基本 UINavigationController 并为其分配一个自定义类(不仅仅是作为 UINavController 的子视图的 viewController..即包含在导航栏下方的视图)。在 UINavigationController 内部,在 shouldAutoRotate 上返回 NO。

于 2013-06-17T21:59:32.090 回答