ios – 无论设备方向如何,物体落在地球上

使用CoreMotion框架,我已经看到了两种方式来描述不同设备方向的落后对象行为.我已经在代码中尝试过这两个版本,它们似乎都像我期望的一样,即不论设备方向如何,都落在地球上.我只是好奇为什么两个版本的行为都一样,即使在第一个版本中,x和y方向的加速度,即dx和dy,是以横向切换的?

提前感谢任何建议或帮助!

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)
                            }

解决方法

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

在真实的设备上,行为应该有所不同,因为您将始终至少轻轻地倾斜设备.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...