【问题标题】:iOS Getting initial device orientation with accelerometeriOS使用加速度计获取初始设备方向
【发布时间】:2015-03-09 18:19:20
【问题描述】:

我正在开发 OpenGL ES 游戏、c++ 和 iOS。我希望画布轴始终保持默认的纵向方向,并且能够知道哪个是初始设备方向以及所有方向变化。

我遇到的问题是,如果我将 XCode 项目配置为支持 4 个方向:2 个纵向和 2 个横向,那么嵌入 OpenGL 画布的框架具有取决于初始方向的轴。如果我将项目配置为仅支持纵向,则应用程序不会告诉我它是否处于横向。

我想找到一种尽可能以编程方式完成此操作的方法。

【问题讨论】:

    标签: ios iphone ipad opengl-es


    【解决方案1】:

    1) 在 iOS 中以编程方式了解

            UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
    if(orientation == UIDeviceOrientationLandscapeLeft)
        landscapeRight = false;
    else if(orientation == UIDeviceOrientationLandscapeRight)
    else if(orientation == UIDeviceOrientationPortraitUpsideDown)
    else if(orientation == UIDeviceOrientationPortrait)
    ....
    

    2) 默认纵向视图

    在 Xcode 项目的 info.plist 中限制其他方向

    【讨论】:

    • 但是如果我将项目 info.plist 方向设置为纵向,那么 [[UIDevice currentDevice] 方向] 始终是纵向,如果在应用程序之外,它有另一个方向
    • “在应用程序之外”是什么意思?你的意思是后台状态的应用程序?你到底需要什么?
    • 是的,我的意思是在后台状态。我想在 info.plist 中设置只支持纵向(所以宽度和高度是固定的,它简化了 opengl 实现)。我在我的 opengl 代码中内部实现了旋转,但是如果我在 info.plist 中修复 Portrait,我无法检索初始方向。
    • 您使用哪种方法执行该代码以获得初始方向?它在视图控制器的 didLoad 中不起作用。
    • 您应该在 viewDidAppear 及更高版本中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多