[Xcode 實際操做]9、實用進階-(9)陀螺儀設備的使用

目錄:[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

相關文章
相關標籤/搜索