IOS CoreMotion

原创 2015年11月18日 21:59:29



import UIKit

import CoreMotion


class ViewController: UIViewController,UIAccelerometerDelegate {
    
    var ball:UIImageView!
    var speedX:UIAccelerationValue=0
    var speedY:UIAccelerationValue=0
    var motionManager = CMMotionManager()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //放一个小球在中央
        ball=UIImageView(image:UIImage(named:"ball"))
        ball.frame=CGRectMake(0,0,50,50)
        ball.center=self.view.center
        self.view.addSubview(ball)
        
        motionManager.accelerometerUpdateInterval = 1/60
        
        if(motionManager.accelerometerAvailable)
        {
            let queue = NSOperationQueue.currentQueue()
            motionManager.startAccelerometerUpdatesToQueue(queue!, withHandler:
                { (accelerometerData : CMAccelerometerData?, error: NSError?) -> Void in
                    
                    //动态设置小球位置
                    self.speedX += accelerometerData!.acceleration.x
                    self.speedY +=  accelerometerData!.acceleration.y
                    var posX=self.ball.center.x + CGFloat(self.speedX)
                    var posY=self.ball.center.y - CGFloat(self.speedY)
                    //碰到边框后的反弹处理
                    if posX<0 {
                        posX=0;
                        //碰到左边的边框后以0.4倍的速度反弹
                        self.speedX *= -0.4
                        
                    }else if posX > self.view.bounds.size.width {
                        posX=self.view.bounds.size.width
                        //碰到右边的边框后以0.4倍的速度反弹
                        self.speedX *= -0.4
                    }
                    if posY<0 {
                        posY=0
                        //碰到上面的边框不反弹
                        self.speedY=0
                    } else if posY>self.view.bounds.size.height{
                        posY=self.view.bounds.size.height
                        //碰到下面的边框以1.5倍的速度反弹
                        self.speedY *= -1.5
                    }
                    self.ball.center=CGPointMake(posX,posY)
            })
        }
    }
}


iOS计步器功能实现之CoreMotion如何读取数据(二)

上篇文章写了如何简单实现记步功能,但是作为一款app我们不仅仅要实现记步功能,还要对记录的数据进行整理,更好的呈现给用户,发送给后台,保存用户的运动信息等。在上篇文章中提到过获取用户运动信息的方法如下...
  • HHL110120
  • HHL110120
  • 2016年05月29日 16:15
  • 2990

iOS计步器功能实现之CoreMotion(一)

最近公司的app中新增加了一个计步器的功能,从网上了搜到了healthKit可以实现记步功能,但是分析后发现HealthKit应该是调用的苹果自己的API来实现的专门为自身的运动手环,苹果手表,电子称...
  • HHL110120
  • HHL110120
  • 2016年05月29日 12:30
  • 6933

教你 Debug 的正确姿势——记一次 CoreMotion 的 Crash

最近的一个手机 QQ 版本发出去后收到比较多关于 CoreMotion 的 crash 上报,案发现场如下: 但是看看这个堆栈发现它完全不按照套路出牌啊! 乍一...
  • pengyuan_D
  • pengyuan_D
  • 2017年06月26日 09:41
  • 203

加速计和陀螺仪(CoreMotion框架)

一、CoreMotion框架介绍我们知道有一些iOS的应用,会有一些特殊的要求,比如: 1. 电子罗盘指南针之类的应用:让我们知道方向。 2. 运动类型软件:让我们知道我们跑步多少公里。 3. ...
  • dream9393
  • dream9393
  • 2017年03月21日 12:37
  • 479

CoreMotion可以测到的各种值

1,CMAccelerometerData 实际包含一个结构体acceleration(类型:CMAcceleration),提供三轴加速度值,如下所示: typedef struct {...
  • ganjicijiao
  • ganjicijiao
  • 2014年02月15日 10:22
  • 1757

教你 Debug 的正确姿势——记一次 CoreMotion 的 Crash

作者:林蓝东 最近的一个手机 QQ 版本发出去后收到比较多关于 CoreMotion 的 crash 上报,案发现场如下:但是看看这个堆栈发现它完全不按照套路出牌啊!乍一看是挂在 CoreMotion...
  • Tencent_Bugly
  • Tencent_Bugly
  • 2017年06月12日 16:05
  • 854

CoreMotion框架-iOS设备的核心运动

我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向。 2.运动类型软件-让我们知道我们跑步多少公里。 3.社...
  • xiaoweifive
  • xiaoweifive
  • 2015年06月22日 11:38
  • 227

CoreMotion框架-iOS设备的核心运动

我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向。 2.运动类型软件-让我们知道我们跑步多少公里...
  • sky_2016
  • sky_2016
  • 2014年12月11日 10:48
  • 889

CoreMotion框架-iOS设备的核心运动

我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向。 2.运动类型软件-让我们知道我们跑步多少公里...
  • yu0089
  • yu0089
  • 2013年11月06日 10:37
  • 4619

CoreMotion框架-iOS设备的核心运动

我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向。 2.运动类型软件-让我们知道我们跑步多少公里...
  • zrhloveswallow
  • zrhloveswallow
  • 2014年05月12日 17:21
  • 1022
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS CoreMotion
举报原因:
原因补充:

(最多只允许输入30个字)