iOS方向在特定屏幕上支持横向和纵向 - 不是所有屏幕

时间:2014-03-31 16:26:47

标签: ios iphone ios7 xcode5 ios7.1

同志,

我只是想知道,如何仅在特定屏幕上启用横向方向?截至目前,我在常规设置中选择了横向左右选项,并在plist文件中的支持界面方向(iPhone)中启用了设备方向,但这会影响所有屏幕。

我的应用程序中有近80个屏幕,我需要支持5个屏幕的纵向和横向,其余屏幕只能在纵向模式下显示。

非常感谢任何帮助!

谢谢, 拉梅什

2 个答案:

答案 0 :(得分:0)

在“常规设置”(仅调整您的plist)中,您需要选择所有可能支持的方向。然后,您需要在特定的视图控制器中限制它们。如果您正在使用NavBar或TabBar控制器,则需要在那里添加限制。

来自UIViewController文档:

  

在iOS 6及更高版本中,您的应用程序支持应用程序的Info.plist文件中定义的界面方向。视图控制器可以覆盖supportedInterfaceOrientations方法以限制支持的方向列表。通常,系统仅在窗口的根视图控制器或呈现的视图控制器上调用此方法以填充整个屏幕;子视图控制器使用由父视图控制器为其提供的窗口部分,不再直接参与有关支持哪些旋转的决策。应用程序的方向遮罩和视图控制器的方向遮罩的交点用于确定视图控制器可以旋转到哪个方向。

为了简化这一点,我在UINavigationController上创建了一个类别,该类别查看最顶层的视图控制器以确定它的旋转能力。这样,在我需要旋转的特定视图控制器中,我可以覆盖那些相同的方法并添加格局支持。

@implementation UINavigationController (AutoRotation)

- (NSUInteger)supportedInterfaceOrientations
{
    return [self.topViewController supportedInterfaceOrientations];
}

- (BOOL)shouldAutorotate
{
    return [self.topViewController shouldAutorotate];
}

@end

答案 1 :(得分:0)

你的屏幕是UINavigationController吗?如果是这样,我注意到并非所有的viewControllers都能决定它们支持的方向。