如何确定 UIDeviceOrientationFaceUp 是横向 FaceUp 还是 Portrait FaceUp?
谁能告诉我?
如何确定 UIDeviceOrientationFaceUp 是横向 FaceUp 还是 Portrait FaceUp?
谁能告诉我?
UIDeviceOrientation
只会告诉你物理设备的方向。您需要使用使用UIInterfaceOrientation
(from UIApplication
) 的方法根据屏幕是处于纵向还是横向模式来做出决定。
你可以使用UIInterfaceOrientationIsLandscape()
and UIInterfaceOrientationIsPortrait()
with a UIInterfaceOrientation
too。
我现在意识到这是一个老问题,但是看着每个人的答案都过于迂腐了。以防其他人偶然发现:
您的问题的答案是让您保留一个次要变量,它是您接受的任何方向。
当设备方向通知进来时,只需查看传入的方向,看看它是否可以接受,(纵向/横向不是面朝上/面朝下)然后更新您的辅助变量,最后使用您的辅助从那里触发 ui/app 刷新变量作为方向源。
这将具有将方向锁定到“最后已知良好”方向的效果。
这是不可能的,因为加速度计无法检测到围绕 z 轴的旋转。在 iPhone 4 上,您也许可以为此使用陀螺仪(使用 CoreMotion),但UIDevice
没有用于此的 API。然后您还必须定义起始位置是什么,因为您无法从设备的角度检测用户在哪个方向。
UIDeviceOrientationFaceUp 和 UIDeviceOrientationFaceDown 是设备平放时的方向(如放在桌子上)。在这种情况下,纵向和横向没有意义。
没有任何方法可以从方向找到。我找到了一种解决方法。
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
}