为了鼓励大家,先上效果图

心动吧,快来学做一个然后和你们的小伙伴一下比一下手速吧!!!
代码前先介绍一下iOS传感器的作用和功能
- 传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息, 按一定规律变换成为电信号或其他所需形式的信息输出
- 简单说明:传感器就是用于感应和检测周围的信息
- 目前已经广泛应用于智能手机上
实现思路
- 这里我们需要用到传感器里面的加速计传感器(Motion/Accelerometer Sensor)
- 加速计用于检测设备在X、Y、Z轴上的加速度 (哪个方向有力的作用),然后根据X、Y、Z轴上加速度来推出谁的手速最快,幅度最大,然后根据值作个判断返回给label显示
加速计的原理
- 检测设备在X、Y、
- Z轴上的加速度 (哪个方向有力的作用,哪个方向运动了)
- 根据加速度数值,就可以判断出在各个方向上的作用力度
获取加速计有两种方式 (随便选择使用)
- push方式:实时采集所有数据(采集频率高)
import UIKit
import CoreMotion
class ViewController: UIViewController {
private func push() {
// 1.判断加速计是否可用
guard mgr.accelerometerAvailable else {
return
}
// 2.设置时间间隔
mgr.accelerometerUpdateInterval = 1.0
// 3.开始采集数据
mgr.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { (data : CMAccelerometerData?, error : NSError?) in
// 1.错误校验
if error != nil {
return
}
// 2.判断data是否有值
guard let data = data else {
return
}
// 3.获取加速计具体的值
print("x:\(data.acceleration.x) y:\(data.acceleration.y) z:\(data.acceleration.z)")
}
}
}
- pull方式:在有需要的时候,再主动去采集数据
import UIKit
import CoreMotion
class ViewController: UIViewController {
private lazy var mgr : CMMotionManager = CMMotionManager()
override func viewDidLoad() {
super.viewDidLoad()
// pull方式
// 1.判断加速计是否可用
guard mgr.accelerometerAvailable else {
return
}
// 2.开始采集数据
mgr.startAccelerometerUpdates()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
guard let data = mgr.accelerometerData else {
return
}
print("x:\(data.acceleration.x) y:\(data.acceleration.y) z:\(data.acceleration.z)")
}
}
最后根据分别拿到X、Y、Z值来计算你个人的手速,值大的为手速王啦!快来做一个和你的好基友比手速啦!
我是子祖,来了就点个赞再走,喜欢就关注我,我还会陆续更新更多项目让大家去练手,或者你有什么语言想了解的都可以和我聊聊!
网友评论