本文将演示陀螺仪设备的使用。
在项目导航区,打开视图控制器的代码文件【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 }
点击设备名称,弹出设备列表。需要在真实设备上测试陀螺仪。
当设备自由移动或摆动时,标签对象会实时显示设备姿态的三维数值。