1

如何确定 UIDeviceOrientationFaceUp 是横向 FaceUp 还是 Portrait FaceUp?

谁能告诉我?

4

5 回答 5

4

UIDeviceOrientation只会告诉你物理设备的方向。您需要使用使用UIInterfaceOrientation(from UIApplication) 的方法根据屏幕是处于纵向还是横向模式来做出决定。

你可以使用UIInterfaceOrientationIsLandscape()and UIInterfaceOrientationIsPortrait()with a UIInterfaceOrientationtoo。

于 2011-01-24T09:38:49.943 回答
3

我现在意识到这是一个老问题,但是看着每个人的答案都过于迂腐了。以防其他人偶然发现:

您的问题的答案是让您保留一个次要变量,它是您接受的任何方向。

当设备方向通知进来时,只需查看传入的方向,看看它是否可以接受,(纵向/横向不是面朝上/面朝下)然后更新您的辅助变量,最后使用您的辅助从那里触发 ui/app 刷新变量作为方向源。

这将具有将方向锁定到“最后已知良好”方向的效果。

于 2012-08-06T06:16:13.927 回答
0

这是不可能的,因为加速度计无法检测到围绕 z 轴的旋转。在 iPhone 4 上,您也许可以为此使用陀螺仪(使用 CoreMotion),但UIDevice没有用于此的 API。然后您还必须定义起始位置是什么,因为您无法从设备的角度检测用户在哪个方向。

于 2011-01-24T09:38:47.180 回答
0

UIDeviceOrientationFaceUp 和 UIDeviceOrientationFaceDown 是设备平放时的方向(如放在桌子上)。在这种情况下,纵向和横向没有意义。

于 2011-01-24T12:13:31.827 回答
-1

没有任何方法可以从方向找到。我找到了一种解决方法。

CGRect screenBounds = [[UIScreen mainScreen]bounds];

if(screenBounds.size.width > screenBounds.size.height)
{
    // This means FaceUP/Down is in Landscape
}
else
{
    // This means FaceUp/Down is in Portrait
}
于 2015-05-05T10:59:44.157 回答