如何从后台检测iOS设备方向?

时间:2015-09-15 14:49:04

标签: ios uideviceorientation

我正在为在后台运行的客户端开发应用程序。

它不是应用商店应用,因此它与通常适用于应用商店应用的规则不完全相同。甚至私有API也是这个应用程序的一个选项,但它必须在非越狱设备上运行。 (该应用程序将是一个企业应用程序。)

应用需要知道当前的设备方向。看似简单,但事实并非如此。我使用您期望的常规代码:

UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
BOOL inLandscape = UIDeviceOrientationIsLandscape(deviceOrientation);

但是,当应用程序从前台移动到后台时,它似乎会返回有效的方向。

我需要方向来跟踪实际的设备方向。实际上我真正想要的是当前前台应用程序的用户界面方向,但是苹果公​​司很难推断它。如果必须的话,我会选择设备方向。

这个应用程序是用Objective-C编写的,但是我会说Swift"同样,用两种语言表达的答案都很好。

1 个答案:

答案 0 :(得分:6)

有一个名为-[UIApplication _getSpringBoardOrientation]的私有方法,它只调用另一个私有方法-[UIApplication activeInterfaceOrientation],它似乎为您提供当前前景应用的方向。