我有一个iOS8应用程序,我需要在玩游戏时支持所有方向,但在菜单中,仅限肖像。我希望应用程序仅使用纵向图像启动,因此它与纵向菜单匹配。我遇到的问题是我必须设置“UISupportedInterfaceOrientations'在Info.pList文件中支持所有方向,因为我需要它们全部用于主游戏。这显然会导致我的应用程序在横向模式下启动,如果设备是侧面的,我不想要。我试图将info.pList文件中的值设置为仅限肖像,但这会导致横向模式完全停止工作。
是否有办法允许info.pList文件中的所有方向,但强制启动图像仅限纵向?或者允许我的代码中的所有方向,但在info.pList文件中仅指定纵向值?
答案 0 :(得分:4)
您应该使用iOS 8的“启动屏幕文件”(xCode 6+中提供)。然后根据需要对启动文件应用约束(您可以根据需要在故事构建器中允许启动xib的方向)。即使您希望它用于以前的版本,也可以创建一个单独的初始屏幕并在故事构建器中设置其方向属性。
答案 1 :(得分:2)
我也遇到了这个问题,并从Apple本身找到了一个很好的解决方案:
它表示要在info.plist中检查所需的启动方向,然后在appdelegate中实现此委托方法以在启动后覆盖支持的方向:
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
return .AllButUpsideDown
}
答案 2 :(得分:0)
您可以使用以下命令定义父视图控制器:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
你的旋转视图控制器:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}
答案 3 :(得分: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
}