在 ios6 下横向启动应用程序同时支持所有方向

Posted

技术标签:

【中文标题】在 ios6 下横向启动应用程序同时支持所有方向【英文标题】:Launching an app in landscape under ios6 while supporting all orientations 【发布时间】:2012-11-07 18:50:31 【问题描述】:

我已经进行了大量研究,但仍然无法找到解决方案...

我有一个支持所有方向的应用程序。当应用程序在 iPad 上运行时,我希望它以横向模式启动。然后,如果他们选择,用户可以旋转到纵向。在 ios5 下,我通过在 info.plist 文件中将 iPad 支持的方向设置为 lansdcape left 来实现这一点。然后,我在每个视图控制器中使用 shouldAutorotateToInterfaceOrientation 方法来允许应用程序运行时的所有方向。

然后我更改了我的代码以支持 iOS6 的新方向方法,但是当我在 iPad 上运行应用程序时,它根本没有旋转。然后我更改了 info.plist 文件以支持 iPad 的所有方向。这解决了 iPad 不自动旋转的问题,但现在我不知道如何强制应用程序最初以横向模式打开。有任何想法吗?

提前感谢您提供的任何帮助!

【问题讨论】:

【参考方案1】:

我最近遇到了类似的事情,虽然我的问题是我想在 iPhone 应用程序中强制纵向,但允许电影以横向播放。这是我所做的:

向我的应用委托添加一个属性来存储我想要允许的方向:

@property (nonatomic, assign) NSUInteger supportedOrientations;

然后在 app delegate 中,实现新的 iOS 6 方法:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 

    return supportedOrientations;

在应用启动时,我强制肖像:

self.supportedOrientations = UIInterfaceOrientationMaskPortrait;

然后,一旦应用程序完成启动并显示了我的根视图控制器,我将其设置为支持两个方向:

self.supportedOrientations = UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;

之后我必须添加子类化 UINavigationController 以防止旋转的额外步骤,因为我想允许横向视频但不允许旋转:

- (BOOL)shouldAutorotate 

    return FALSE;

但这只是为了提供信息。你不需要那个

【讨论】:

以上是关于在 ios6 下横向启动应用程序同时支持所有方向的主要内容,如果未能解决你的问题,请参考以下文章

在 xcode 4.5 GM IOS 6 中将方向设置为横向模式

IOS 6强制设备方向为横向

支持 iPhone 6 和 iPhone 6+,针对 iPad 纵向和横向方向具有不同的启动/启动屏幕图像

强制支持所有方向的应用程序的启动方向

iPad 上的 UIViewController 处理方向 iOS 6.0

仅在ios 6的一个视图中启用横向方向