题
如何找出uideviceorientationfaceup是景观面貌或肖像面的面貌?
有人可以告诉我吗?
解决方案
这是不可能的,因为加速度计无法检测到Z轴周围的旋转。在iPhone 4上,您可能可以使用陀螺仪(使用coremotion),但是 UIDevice
没有API。然后,您还必须定义起始位置是什么,因为您无法从设备的角度检测用户是哪个方向。
其他提示
UIDeviceOrientation
只会告诉您物理设备的方向。您需要使用使用的方法 UIInterfaceOrientation
(从 UIApplication
)决定取决于屏幕是否处于肖像和景观模式。
您可以使用 UIInterfaceOrientationIsLandscape()
和 UIInterfaceOrientationIsPortrait()
与 UIInterfaceOrientation
也。
我意识到这是一个古老的问题,但是看着每个人都过于学先的答案。如果其他人都偶然发现了这一点:
解决问题的答案是让您保留一个辅助变量,即您所接受的任何方向。
当设备方向通知进来时,只需查看传入方向,看看它是否可以接受,(肖像/景观不面对面/面向),然后更新您的次要变量,最后触发UI/App Refresh from二级刷新。变量作为方向源。
这将具有将方向锁定在“最后已知的良好”方向上的效果。
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
}
不隶属于 StackOverflow