使用CoreMotion检测手机倾斜

问题描述

我正在尝试使用CoreMotion来检测手机是否稍微倾斜,以便在手机未垂直放置时向用户发出警报。

假设设备在向左或向右旋转不到40度并且向后或向前旋转不到40度时处于垂直位置。

description

现在我像这样使用cmmotionmanager

motionManager.deviceMotionUpdateInterval = 1.0 / 60.0
motionManager.showsDeviceMovementdisplay = true
motionManager.startDeviceMotionUpdates(to: OperationQueue()) { motion,error in
    if let data = motion {
        let pitch = data.attitude.pitch.todegrees()
        let roll = data.attitude.roll.todegrees()
        let yaw = data.attitude.yaw.todegrees()

        print("Pitch: \(pitch),roll: \(roll),yaw: \(yaw).")
    }
}

extension Double {

    func todegrees() -> Double {
        self * 180.0 / .pi
    }
}

如果我理解正确,则pitch值将告诉我电话向左或向右旋转,而yaw值将告诉我电话向左或向右旋转。现在,我查看了打印的值,pitch似乎很好,当手机直立时,它等于90度。但是yaw的值并没有像我旋转手机时所期望的那样发生变化。

问题是,我做错什么了吗?我应该使用哪些值来检查手机是否向前/向后或向左/向右旋转?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)