横向的初始界面方向 iOS 9

Initial Interface Orientation to Landscape iOS 9

Technical Note TN2244: Launching your iPhone Application in Landscape 状态:

The values of the UISupportedInterfaceOrientations key determine how the status bar is positioned while the the app is launching. In iOS 7 and below, if the UIInterfaceOrientationPortrait value is present, the status bar will always be positioned for portrait orientation. Otherwise, the status bar will be positioned according to the first orientation that appears under the UISupportedInterfaceOrientations key.

所以在 iOS 8 中,将 UIInterfaceOrientationLandscape 放在 UISupportedInterfaceOrientations 列表的第一位就可以让您的应用程序在 Landscape 中启动。

它在 iOS 中不再起作用 9. 在列表中的 任何 位置有 UIInterfaceOrientationPortrait 会强制应用以纵向模式启动。

问题

是否有已知的解决方法?我需要我的应用程序以横向模式启动。

注意:使用 viewControllers 的 supportedInterfaceOrientations() 方法不是一个选项,因为它在 LaunchScreen 显示后生效。

Having UIInterfaceOrientationPortrait in the list at any position forces app to start in Portrait.

完全正确 - 非常好的侦探工作。我做了很多实验才弄明白这一点!这与iOS 8相比肯定是一个巨大的变化。你把情况总结的很好。

幸运的是,解决方法很简单。在您的 Info.plist 中,仅包含两个横向方向。现在应用程序将启动到第一个。

现在在应用程序中实现 application:supportedInterfaceOrientationsForWindow: 委托给 return 全部。这样,当需要显示纵向视图控制器时,这样做是合法的。

换句话说,将 Info.plist 视为 launching 应用程序需要知道的内容,并且 application:supportedInterfaceOrientationsForWindow: 作为 运行 应用程序需要了解的内容。