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

问题描述 投票:3回答:4

我有一个iOS8应用程序,我需要在玩游戏时支持所有方向,但在菜单中,只是肖像。我希望应用程序仅使用纵向图像启动,因此它与纵向菜单匹配。我遇到的问题是我必须在Info.pList文件中设置'UISupportedInterfaceOrientations'以支持所有方向,因为我需要它们全部用于主游戏。这显然会导致我的应用程序在横向模式下启动,如果设备是侧面的,我不想要。我试图将info.pList文件中的值设置为仅限肖像,但这会导致横向模式完全停止工作。

有没有办法允许info.pList文件中的所有方向,但强制启动图像只有纵向?或者允许我的代码中的所有方向,但在info.pList文件中仅指定纵向值?

ios ios8
4个回答
4
投票

您应该使用iOS 8的“启动屏幕文件”(xCode 6+中提供)。然后根据需要对启动文件应用约束(您可以根据需要在故事构建器中允许启动xib的方向)。即使您希望它用于以前的版本,也可以创建一个单独的初始屏幕并在故事构建器中设置其方向属性。


2
投票

我也遇到了这个问题,并从Apple本身找到了一个很好的解决方案:

https://developer.apple.com/library/ios/technotes/tn2244/_index.html#//apple_ref/doc/uid/DTS40009012-CH1-ALLOWING_YOUR_APP_TO_ROTATE_INTO_PORTRAIT_ORIENTATION_AFTER_LAUNCH

它表示要在info.plist中检查所需的启动方向,然后在appdelegate中实现此委托方法以在启动后覆盖支持的方向:

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
    return .AllButUpsideDown
}

0
投票

您可以使用以下命令定义父视图控制器:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
}

和你的旋转视图控制器:

- (BOOL)shouldAutorotate {
    return YES;
}


- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskAll;
}

0
投票

您必须遵循以下两个步骤:

1-您需要在Info.plist文件中仅选择一个所需的方向。此选择将应用于您的启动屏幕。对于你的例子,这应该是UIInterfaceOrientationPortrait

2-你必须在你的func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask中实现AppDelegate。对于您的示例案例实现应该是

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return .all    
 }
© www.soinside.com 2019 - 2024. All rights reserved.