当设备在 LandscapeLeft 中时,iOS 应用程序在 LandscapeRight 中启动

Posted

技术标签:

【中文标题】当设备在 LandscapeLeft 中时,iOS 应用程序在 LandscapeRight 中启动【英文标题】:iOS application starts in LandscapeRight when device in LandscapeLeft 【发布时间】:2015-01-21 11:21:28 【问题描述】:

我有一个适用于 iPhone 的 ios 应用程序,可以在屏幕上显示信息。部署信息表明支持 LandscapeLeft 和 LandscapeRight。 当我使用 LandscapeRight 中的设备启动我的应用程序时,一切都很好,将我的设备转到 LandscapeLeft 会将我的整个图像还原 180 度,并且显示的信息仍然正常。现在,如果我在设备打开的情况下启动应用程序LandscapeLeft,应用程序无论如何都会在 Landscape Right 中启动,我必须完全物理转动我的设备才能检测到正确的方向。基本上,如果我在 ViewController viewDidLoad 的开头添加代码:

if ([UIApplication sharedApplication].statusBarOrientation == UIDeviceOrientationLandscapeLeft)

    NSLog(@"LandscapeLeft");

else  if ([UIApplication sharedApplication].statusBarOrientation == UIDeviceOrientationLandscapeRight)

    NSLog(@"LandscapeRight");

始终显示 LandscapeRight。

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
如果我的设备方向没有发生物理变化,则不会调用

。 有什么建议我可以检测到真正的方向吗?谢谢。

=== 编辑 === 我刚刚发现了一些有趣的事情。如果我将 Launchscreen 保留在 .plist 文件中(我将其删除)和相关的默认 Launchscreen.xib,那么它可以正常工作。我怎样才能在没有启动屏幕的情况下正确地拥有 ;y 所需的行为?

【问题讨论】:

【参考方案1】:

你必须检查你的 .plist 文件设置...

在应用程序的“Info.plist”文件中,添加具有 UIInterfaceOrientationLandscapeLeft 和 UIInterfaceOrientationLandscapeRight 值的 UISupportedInterfaceOrientations 键

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>

更多信息请参考文档链接https://developer.apple.com/library/ios/technotes/tn2244/_index.html

【讨论】:

看这个链接..***.com/questions/5888016/… 同样的问题 :-( 增加了 shouldAutorotateToInterfaceOrientation 功能,但即使设备在 LandscapeLeft 中,[UIApplication sharedApplication].statusBarOrientation 也会指示 LandscapeRight。

以上是关于当设备在 LandscapeLeft 中时,iOS 应用程序在 LandscapeRight 中启动的主要内容,如果未能解决你的问题,请参考以下文章

当警报首次出现在 iOS 中时,是不是可以自定义蓝牙消息

iOS 11 设备方向自动旋转

Default-LandscapeLeft~iPad.png 不显示

当所有参数都在设备内存中时如何调用 cuSparse?

当设备位于我的用户目录中时,为啥 Android 模拟器会报告“未知虚拟设备”?

设备就绪 ios 不工作