无论设备方向如何,物体都会落向地面

Tho*_*hor 10 iphone ios core-motion swift

我已经看到两种使用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)
                        }
Run Code Online (Sandbox Code Playgroud)

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)
                            }
Run Code Online (Sandbox Code Playgroud)

sha*_*ght 1

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

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