ios - 如何在 Swift 中获取 iPhone 当前的俯仰、偏航和横滚?

标签 ios swift gyroscope core-motion

我希望获得 iPhone 设备相对于基准位置的准确当前俯仰、偏航和横滚。很像指南针应用程序中所做的事情。我在网上找到的大部分内容都是关于检测结果中的变化,而我正在寻找相对于基本位置的绝对位置,基本位置(pitch: 0, roll: 0 ,偏航:0) 是这个位置:

有人可以建议我应该做什么才能得到这个吗?我需要这个一次性的,基本上是函数调用的结果。

最佳答案

设备不会持续跟踪方向。您的应用需要表明它需要此数据(通过 Info.plist 文件)并开始监视它,然后您才能访问它。

可通过deviceMotion访问该信息CMMotionManager 类的属性。它是一个可选的,表示如果设备不支持此功能或者您没有事先开始监视数据,则该值为零。

您需要指定一个可用于此目的的引用系 startDeviceMotionUpdates(using:)以便您获得正确的值。您想要的可能是 .xTrueNorthZVertical。请注意,相关文档指出:

Note that using this reference frame may require device movement to calibrate the magnetometer. It also requires the location to be available in order to calculate the difference between magnetic and true north.

这可能意味着你不能自发地阅读它。您可能需要在您的应用程序启动或用户进入您需要的 View 时开始监视,并稍后在校准完成并且用户执行需要的操作时检查该值。

关于ios - 如何在 Swift 中获取 iPhone 当前的俯仰、偏航和横滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47770609/

相关文章:

iphone - 如何静音 AVFoundation 中的捕获声音?

iphone - 在设备上运行收到 "Finish running on device"消息但从未运行

json - id 解码 JSON 时找不到 key

objective-c - 如何使用 CADisplayLink 在 CMRotationMatrix 上应用过滤器

iphone - iOS中多个CMMotionManager冲突如何解决?

c - IIO 设备缓冲区始终为空

ios - 单击第一个 TableView 单元格时如何传递第二个 TableView 单元格的数据

ios - 为什么升级到 XCode 7 后会出现 "HTTP load failed"异常?

swift - 如何使用 Swift 检查 macOS 应用程序复选框的状态

ios - 如何防止嵌入导航 Controller 的 View Controller 中的自动旋转?