2017-08-28 170 views
-1

使用加速計我需要幫助使用與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

回答

0

您可以通過調用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非常有幫助;) –

0

即得到由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