如何在迅速3

问题描述:

使用加速计我需要帮助使用与SWIFT 3.如何在迅速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)" 
     } 
    } 
} 

它的工作原理,但它只是告诉我XY和Z和我想使用Z.

例:Z = 2做点什么

+0

想要使用Z并获得X,Y,Z。你有什么问题?你需要帮助从三元组中提取Z值吗?另一方面,当您只分析Z数据时,它意味着对加速度计的校准和移动前/移动过程中的方向的一些假设。 – Yunnosch

您可以通过调用CMAccelerometerData.acceleration.z访问Z轴的加速度。如果您不确定如何访问某个类的某个属性,请始终直接在Xcode或Apple's documentation website上检查文档,这样可以节省大量时间。

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 
    } 
}) 
+1

Thx非常有帮助;) –

即得到由startAccelerometerUpdates(...)返回的data目的是CMAccelerometerData具有CMAcceleration属性类型。从这里你可以得到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... 
      } 
     } 
    } 
} 
+0

你的意思是'如果trueData.acceleration.z == 2'。 – rmaddy

+0

你从哪里得到的?数据的类型是'CMAccelerometerData'。 –

+0

@rmaddy你是对的,修正了 – Paolo