高度计 CMAltimeter 是 CoreMotion 框架中的一个功能类,主要用于记录设备的高度变化。本文演示它时如何使用的。
1 效果图
(1)程序启动后先判断设备是否支持高度计。
(2)如果支持的话则实时获取高度变化的差值(相对程序启动时设备最开始的位置),以及当前的大气压强值。

2 样例实现
(1)由于安全限制,首先我们要在 info.plist 文件中加入访问用户健康和运动信息的相关描述。

(2)样例代码
import UIKit
import CoreMotion
class ViewController: UIViewController {
//用于显示实时信息
@IBOutlet weak var textView: UITextView!
//高度计对象
let altimeter = CMAltimeter()
override func viewDidLoad() {
super.viewDidLoad()
//开始高度计更新
startRelativeAltitudeUpdates()
}
// 开始获取高度计数据
func startRelativeAltitudeUpdates() {
//判断设备支持情况
guard CMAltimeter.isRelativeAltitudeAvailable() else {
self.textView.text = "\n当前设备不支持获取高度\n"
return
}
//初始化并开始实时获取数据
let queue = OperationQueue.current
self.altimeter.startRelativeAltitudeUpdates(to: queue!, withHandler: {
(altitudeData, error) in
//错误处理
guard error == nil else {
print(error!)
return
}
//获取各个数据
var text = "---高度计数据---\n"
text += "高度变化: \(altitudeData!.relativeAltitude) 米\n"
text += "压力: \(altitudeData!.pressure) kPa\n"
self.textView.text = text
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}