【问题标题】:How can I get the real device's orientation?如何获得真实设备的方向?
【发布时间】:2011-09-20 22:27:18
【问题描述】:

全部,
当我锁定屏幕方向时,我想使用 [[UIDevice currentDevice]orientation] 来获取屏幕的方向,但它总是返回 UIDeviceOrientationPortrait,所以,问题是我怎样才能得到真实设备的方向。
非常感谢。

【问题讨论】:

标签: iphone objective-c orientation uidevice


【解决方案1】:

如果您在模拟器中进行测试,请注意模拟器在返回准确的方向值方面很糟糕。在设备上测试。

【讨论】:

    【解决方案2】:

    根据the documentation,您需要先打开方向通知生成。

    您需要致电:

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    

    然后您可以检查设备的方向。您需要告诉设备您已完成方向,以节省电池电量。您可以调用:

    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
    

    就我个人而言,using the status bar's orientation 的运气更好。这是因为有时(例如,当设备平放在表面上时)设备方向不会是“横向”或“纵向”。

    【讨论】:

    • [[UIDevice currentDevice]orientation] 如果用户已从 Springboard 锁定了他的设备方向,则不起作用。方向始终是最后一个值,并且没有更改通知。
    【解决方案3】:

    确保您通过以下方式启用方向通知:

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

    如果这仍然不起作用,您还可以通过以下方式使用状态栏来确定当前方向(如果您的 UI 正在旋转):

    [[UIApplication sharedApplication] statusBarOrientation];

    【讨论】:

      【解决方案4】:

      另一种解决方案是从 CoreMotion 库中检测方向。当纵向方向锁定:打开时,它将修复一个错误。 参考那篇文章:http://codrspace.com/yuvirajsinh/device-orientation-detection-using-coremotion/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 2019-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多