美文网首页@IT·互联网@产品程序员
拯救单身狗,用swift写一个app测试你的手速(女生禁入)

拯救单身狗,用swift写一个app测试你的手速(女生禁入)

作者: 子祖 | 来源:发表于2016-08-26 21:44 被阅读1018次

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


心动吧,快来学做一个然后和你们的小伙伴一下比一下手速吧!!!

代码前先介绍一下iOS传感器的作用和功能

  • 传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息, 按一定规律变换成为电信号或其他所需形式的信息输出
  • 简单说明:传感器就是用于感应和检测周围的信息
  • 目前已经广泛应用于智能手机上

实现思路

  • 这里我们需要用到传感器里面的加速计传感器(Motion/Accelerometer Sensor)
  • 加速计用于检测设备在X、Y、Z轴上的加速度 (哪个方向有力的作用),然后根据X、Y、Z轴上加速度来推出谁的手速最快,幅度最大,然后根据值作个判断返回给label显示

加速计的原理

  • 检测设备在X、Y、
  • Z轴上的加速度 (哪个方向有力的作用,哪个方向运动了)
  • 根据加速度数值,就可以判断出在各个方向上的作用力度

获取加速计有两种方式 (随便选择使用)

  1. 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)")
        }
    }
}

  1. 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值来计算你个人的手速,值大的为手速王啦!快来做一个和你的好基友比手速啦!


我是子祖,来了就点个赞再走,喜欢就关注我,我还会陆续更新更多项目让大家去练手,或者你有什么语言想了解的都可以和我聊聊!

相关文章

网友评论

    本文标题:拯救单身狗,用swift写一个app测试你的手速(女生禁入)

    本文链接:https://www.haomeiwen.com/subject/ysmzsttx.html