我知道这是最常见的问题,相信我,我已经尝试了各种组合来实现这一目标,并且在堆栈溢出中浏览了大多数文章。

我有一个名为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;
    }
}

我最头痛的是iOS6。无论我如何尝试,仍然可以让用户在风景中旋转血腥的东西(请参阅代码和屏幕截图)
// *********************
// 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;
}

最佳答案

您需要确保覆盖基础UINavigationController并为其分配一个自定义类(而不仅仅是作为UINavController子视图的viewController..ie,该视图包含在navigationBar之下)。在UINavigationController内部,对shouldAutoRotate返回NO。

关于iphone - 支持的定向疯狂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17157485/

10-12 05:55