目錄:[Swift]Xcode實際操做html
本文將演示陀螺儀設備的使用。swift
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】框架
1 import UIKit 2 //導入須要用到的CoreMotion框架 3 //該框架不只提供實時的加速度值,還提供設備的三維姿態信息。 4 import CoreMotion 5 6 class ViewController: UIViewController { 7 8 //添加一個屬性,該屬性是框架提供的一個運動管理類。 9 //而後由這個類,去管理三種和運動相關的數據封裝類。 10 var motionManager:CMMotionManager! 11 //繼續添加一個標籤屬性,用來顯示設備的三維姿態信息。 12 var label:UILabel! 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 // Do any additional setup after loading the view, typically from a nib. 17 18 //對標籤對象進行初始化,並設置起位置在(40,80),尺寸爲(240,90) 19 label = UILabel(frame: CGRect(x: 40, y: 80, width: 240, height: 90)) 20 //設置標籤對象的默認文字內容 21 label.text = "Waiting" 22 //設置標籤對象的背景顏色爲橙色 23 label.backgroundColor = UIColor.orange 24 //設置標籤對象的行數爲3行 25 label.numberOfLines = 3 26 //而後將標籤對象,添加到當前視圖控制器的根視圖。 27 self.view.addSubview(label) 28 29 //初始化運動管理類,以後全部的操做,都會由這個類接管。 30 motionManager = CMMotionManager() 31 //設置運動管理類的更新頻率爲10赫茲,即每秒鐘採樣10次 32 //設置更新週期爲0.1秒 33 motionManager.accelerometerUpdateInterval = 0.1 34 35 //在使用前,首先檢查傳感器在設備上是否可用。 36 if motionManager.isAccelerometerAvailable 37 { 38 //而後使用推送的方式,開始對傳感器進行檢測 39 motionManager.startAccelerometerUpdates(to: OperationQueue.main, 40 withHandler: { (accelerometerData:CMAccelerometerData?, error:Error?) -> Void in 41 42 //判斷在運行過程當中是否出現錯誤 43 if error != nil 44 { 45 //若是在運行過程當中出現錯誤,則中止對傳感器的檢測。 46 self.motionManager.stopAccelerometerUpdates() 47 } 48 else 49 { 50 //處理運行正常的狀況 51 //初始化一個字符串,用來存儲設備在三個維度的加速度值 52 var message = "" 53 //得到設備在X、Y、Z軸方向上的加速度的值,並在字符串末尾添加回車符 54 message += "X:\(accelerometerData!.acceleration.x)\n" 55 message += "Y:\(accelerometerData!.acceleration.y)\n" 56 message += "Z:\(accelerometerData!.acceleration.z)" 57 58 //更新標籤對象的文字顯示內容 59 self.label.text = message 60 } 61 }) 62 } 63 else 64 { 65 //若是設備不支持陀螺儀設備,則在控制檯打印輸出警告日誌。 66 print("您的設置不支持加速器") 67 } 68 } 69 70 override func didReceiveMemoryWarning() { 71 super.didReceiveMemoryWarning() 72 // Dispose of any resources that can be recreated. 73 } 74 }
點擊設備名稱,彈出設備列表。須要在真實設備上測試陀螺儀。ide
當設備自由移動或擺動時,標籤對象會實時顯示設備姿態的三維數值。post