确定屏幕的方向而不是设备的方向

时间:2011-05-16 19:09:20

标签: ios screen-orientation uiinterfaceorientation

[[UIDevice currentDevice] orientation]方法返回超出纵向和横向方向的多个方向。我很清楚检查返回的方向是否“有效”,不幸的是,当我的应用程序需要特定的方向来确定运行哪些方法时返回的方向不是“有效”,我无法知道哪种方法是合适的。

我尝试了很多解决方案,但是现在我唯一能够解决的问题是检查方向是LandscapeLeft还是LandscapeRight,如果不是我认为屏幕是纵向的。不幸的是,当设备面朝上并且屏幕处于横向时,情况并非如此。

我尝试使用父视图控制器的方向:

parentController.interfaceOrientation;

不幸的是它返回了UIDeviceOrientationUnknown。我搜索SO和谷歌搜索遇到此问题的其他人。我觉得Apple除了LandscapeLeft/RightPortraitUp/Down之外还有其他任何东西,这对我来说似乎很愚蠢。

我真正需要的是APPS方向,而不是设备,因为这些方面有时候不一致。有什么建议吗?

1 个答案:

答案 0 :(得分:49)

您是否尝试过使用UIInterfaceOrientationPortrait / UIInterfaceOrientationLandscape?我通常使用这些方法得到很好的结果:

if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) {
    //do portrait work
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){
    //do landscape work
}

您也可以尝试UIDeviceOrientationIsValidInterfaceOrientation

这些只会返回应用的方向,可能与设备的方向不同。

如果这些不起作用,您也可以尝试:

[[UIApplication sharedApplication] statusBarOrientation]