Technical Note TN2244: Launching your iPhone Application in Landscape州:
UISupportedInterfaceOrientations键的值确定应用程序启动时状态栏的位置。在iOS 7及更低版本中,如果存在UIInterfaceOrientationPortrait值,则状态栏将始终定位为纵向。否则,状态栏将根据UISupportedInterfaceOrientations键下显示的第一个方向定位。
因此,在iOS 8中,将UIInterfaceOrientationLandscape
放在UISupportedInterfaceOrientations
列表中,以便让您的应用在横向中启动,这是完全正常的。
它在iOS 9中不再有效。在任何位置的列表中UIInterfaceOrientationPortrait
强制应用以纵向开始。
问题
这是否有一个已知的解决方法?我需要我的应用程序从Landscape开始。
注意:使用viewControllers' supportedInterfaceOrientations()
方法不是一个选项,因为它在呈现LaunchScreen后生效。
答案 0 :(得分:3)
在列表中的任何位置都有UIInterfaceOrientationPortrait,强制app在Portrait中开始。
这是绝对正确的 - 非常好的侦探工作。我花了很多实验来解决这个问题!这肯定是iOS 8的巨大变化。你已经很好地总结了这种情况。
幸运的是,解决方法很简单。在 Info.plist 中,仅包含两个横向方向。现在,该应用程序将启动到最先出的那个。
现在在app delegate中实现application:supportedInterfaceOrientationsForWindow:
以返回All。这样,当显示纵向视图控制器的时候,这样做是合法的。
换句话说,将 Info.plist 视为启动应用需要知道的内容,将application:supportedInterfaceOrientationsForWindow:
视为运行< / em> app需要知道。