【问题标题】:Objects falling towards earth regardless of device orientation无论设备方向如何,物体都会落向地面
【发布时间】:2016-09-21 04:40:57
【问题描述】:

我已经看到了两种使用 CoreMotion 框架来描述不同设备方向的坠落物体行为的方法。我已经在代码中尝试了这两个版本,它们的行为似乎都符合我的预期,即无论设备方向如何,都会向地球坠落。

我只是好奇为什么两个版本的行为相同,即使对于第一个版本,x 和 y 方向的加速度,即dxdy,在横向切换?

1)

if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
                            switch UIDevice.currentDevice().orientation {
                            case .Portrait:
                                dy = -dy
                            case .PortraitUpsideDown:
                                break
                            case .LandscapeRight:
                                swap(&dx, &dy)
                            case .LandscapeLeft:
                                swap(&dx, &dy)
                                dy = -dy 
                            default:
                                dx = 0
                                dy = 0
                            }
                            gravity.gravityDirection = CGVector(dx: dx, dy: dy)
                        }

2)

if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
                                switch UIDevice.currentDevice().orientation {
                                case .Portrait:
                                    dy = -dy
                                case .PortraitUpsideDown:
                                    break
                                case .LandscapeRight:
                                    break
                                case .LandscapeLeft:
                                    break
                                default:
                                    dx = 0
                                    dy = 0
                                }
                                gravity.gravityDirection = CGVector(dx: dx, dy: dy)
                            }

【问题讨论】:

  • 如何定位设备以使其方向为 .LandscapeRight 或 .LandscapeLeft?

标签: ios iphone swift core-motion


【解决方案1】:

我猜你正在使用模拟器,所以重力总是与底部正交。

实际设备 imo 上的行为应该有所不同,因为您总是会至少稍微倾斜设备。

【讨论】:

    【解决方案2】:

    1.) 请检查您是否正在运行正确保存的文件。 2.) 可能是 switch-case 块无法访问 PotraitPotraitUpsideDownLandscapeLeftLandscapeRight 表达式。然后它可能会默认。检查定义。那么gravity只能访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      相关资源
      最近更新 更多