和很多人一样,我有一个动画屏幕可以动画显示我应用的第一个视图。我一直在为iPad重新设计这个,如果你在纵向或横向模式下持有设备,一切都按预期工作,使用正确的默认图像,使用正确的图像用于动画关闭,所有方向都有效细
BUT
如果我将设备置于横向模式,然后将其平放在桌面上,则出现问题。使用了正确的启动画面,但是用于为其设置动画的图像是错误的,我已将此跟踪到以下代码,该代码返回5 - 即没有像往返的肖像画面/肖像/ landscapeleft / landscaperight模式。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;
设备本身清楚地知道使用的正确方向,因为状态栏是正确的,实际上第一个视图控制器旋转到正确的方向 - 但很清楚的是[UIDevice currentDevice] .orientation与设备不同实际上知道,所以我用来在app委托中部署适当图形的代码是错误的。
我想我的问题是 - 我该如何解决这个问题?有没有办法在应用代表中获得正确的设备方向?
答案 0 :(得分:4)
UIInterfaceOrientation
是UIDeviceOrientation
的子集。如果UIDeviceOrientationIsValidInterfaceOrientation
为false,那么您通常可以假设UIInterfaceOrientationPortrait
。除了检查设备方向外,您还可以检查statusBarOrientation
的{{1}},但在启动时它也可能没有有效值。
答案 1 :(得分:0)
这是一个对我有用的快速解决方案:
if UIDevice.current.orientation.isFlat { //do something }