Ios 如何在swift 3中使用加速度计

Ios 如何在swift 3中使用加速度计,ios,swift,accelerometer,motion,Ios,Swift,Accelerometer,Motion,我需要帮助使用加速计与swift 3 这是我的代码: var motion = CMMotionManager() @IBOutlet weak var statusAccel: UILabel! override func viewDidAppear(_ animated: Bool) { motion.startAccelerometerUpdates(to: OperationQueue.current!){ (data , error) in

我需要帮助使用加速计与swift 3

这是我的代码:

var motion = CMMotionManager()

@IBOutlet weak var statusAccel: UILabel!

override func viewDidAppear(_ animated: Bool) {
    motion.startAccelerometerUpdates(to: OperationQueue.current!){
        (data , error) in

        if let trueData = data {
            self.view.reloadInputViews()
            self.statusAccel.text = "\(trueData)"
        }
    }
}
它可以工作,但它只显示X、Y和Z,我想使用Z


示例:如果Z=2执行某项操作,则可以通过调用
CMAccelerometerData.acceleration.Z
访问Z轴上的加速度。如果您不确定如何访问类的某个属性,请始终直接在Xcode或on中查看文档,使用这种方法可以节省大量时间

motion.startAccelerometerUpdates(to: OperationQueue.current!, withHandler: { data, error in
    guard error == nil else { return }
    guard let accelerometerData = data else { return }
    if accelerometerData.acceleration.z == 2.0 {
        //do something
    }
})

startAccelerometerUpdates(…)
返回的
data
对象属于具有属性的类型。从中可以得到
z
组件

var motion = CMMotionManager()

@IBOutlet weak var statusAccel: UILabel!

override func viewDidAppear(_ animated: Bool) {
    motion.startAccelerometerUpdates(to: OperationQueue.current!){
        (data , error) in

        if let trueData = data {
            self.view.reloadInputViews()
            self.statusAccel.text = "\(trueData)"

            if trueData.acceleration.z == 2 {
                // do things...
            }
        }
    }
}

你是说
如果trueData.acceleration.z==2
。你从哪里得到的<代码>数据的类型为
CMAccelerometerData
。您想使用Z并得到X,Y,Z。您的问题是什么?从三元组中提取Z值需要帮助吗?另一方面,当您仅分析Z数据时,这意味着对加速度计的校准和移动前/期间的方向进行了一些假设。