Ios 无论设备方向如何,物体都会坠落到地球上

Ios 无论设备方向如何,物体都会坠落到地球上,ios,iphone,swift,core-motion,Ios,Iphone,Swift,Core Motion,我已经看到了两种使用CoreMotion框架描述不同设备方向的坠落物体行为的方法。我在代码中尝试了这两个版本,它们的行为似乎都与我预期的一样,即无论设备的方向如何,都会朝着地球坠落 我只是好奇为什么两个版本的行为相同,即使对于第一个版本,x和y方向的加速度,即dx和dy,都是横向切换的 (一) (二) 我猜你在使用模拟器,所以重力总是垂直于底部 在实际设备上,这种行为应该有所不同,因为您总是会至少稍微倾斜设备。1。)请检查您是否正在运行正确保存的文件。 2.)可能是开关盒块无法访问Potrait

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

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

(一)

(二)


我猜你在使用模拟器,所以重力总是垂直于底部

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

1。)请检查您是否正在运行正确保存的文件。
2.)可能是开关盒块无法访问PotraitPotraitUpsideDownLandscape LeftLandscape Right表达式。然后它可能会变成默认值。检查一下定义。然后只访问重力。

如何定位设备,以使其方向为.LandscapeRight或.LandscapeLeft?
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)
                        }
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)
                            }