问题描述
我正在尝试使用CoreMotion来检测手机是否稍微倾斜,以便在手机未垂直放置时向用户发出警报。
假设设备在向左或向右旋转不到40度并且向后或向前旋转不到40度时处于垂直位置。
现在我像这样使用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 (将#修改为@)