我使用此代码:
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
获取iPad方向,但在使用OpenGL渲染时返回UIDeviceOrientationUnknown。当我播放电影或显示UIViews时,它会返回正确的值。你知道我怎么能得到正确的方向?我不想使用加速度计,因为我想知道设备何时锁定方向。
谢谢!
答案 0 :(得分:18)
在某些情况下,加速度计无法准确读取方向,例如设备保持平坦时。您仍然可以使用以下方式获取当前方向:
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
答案 1 :(得分:3)
在iOS 13中,statusBarOrientation
已被弃用。
let orientation = UIApplication.shared.windows.first?.windowScene?.interfaceOrientation
答案 2 :(得分:0)
如果我添加[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];即使在OpenGL渲染模式下,方向也是正确的。 UIDeviceOrientationUnknown方向有时会返回,但只是很短的时间。