美文网首页ios 开发资源整合
IOS-加速度传感器(重力感应)-UIAcceleromete

IOS-加速度传感器(重力感应)-UIAcceleromete

作者: Daimer | 来源:发表于2017-03-07 15:11 被阅读142次

加速度传感器,就是俗称的重力感应,其实不仅仅可以检测到对重力的感应,它可以捕捉到三个维度的加速度信息。

把iOS设备正面朝上放到桌面上,加速度传感器的默认原点在手机的物理重心位置,x,y,z轴分别穿过这个原点,x轴向右为正方向,y轴朝手机顶部为正方向,z轴朝上为正方向,可以通过代理方法来获取相应方向的加速度具体数值。

加速度传感器使用步骤如下:

①召唤UIAccelerometer这个单例;

②设置UIAccelerometer的updateInterval属性,就是设置通知间隔;

③向UIAccelerometer的delegate属性中设置负责具体处理的委托类;

④实现委托方法accelerometer:didAccelerate:以接受加速度的通知;

⑤从accelerometer:didAccelerate:方法的第二个参数UIAcceleration实例的相关属性中获取加速度。

accelerometer:didAccelerate:方法的第二个参数UIAcceleration实例中,分别拥有代表x轴、y轴、z轴方向加速度的属性。

程序运行之后,在屏幕中央显示一个绿色小方块,倾斜手机时,方块将向着倾斜的方向运动,碰撞到屏幕顶部后将反弹回来。

//屌丝牌ViewController

@interfaceDSViewController :UIViewController

{

//我们用一个label来表示随加速度方向运动的小方块

UILabel*_label;

//x轴方向的速度

UIAccelerationValue_speedX;

//y轴方向的速度

UIAccelerationValue_speedY;

}

@end

@implementationDSViewController

- (void)viewDidLoad

{

[superviewDidLoad];

self.view.backgroundColor=

[UIColoryellowColor];

CGRectwinRect = [UIScreenmainScreen].applicationFrame;

//实例化 随加速度方向运动的小方块(label)

_label= [[UILabelalloc]initWithFrame:CGRectMake(0,0,80,80)];

_label.center=CGPointMake(winRect.size.width*0.5,

winRect.size.height*0.5);

_label.text=@"Droid";

_label.textAlignment=UITextAlignmentCenter;

_label.backgroundColor=

[UIColorgreenColor];

[self.view addSubview:_label];

[_label release];

}

-(void)viewWillAppear:(BOOL)animated

{

[superviewWillAppear:animated];

//召唤加速度传感器

UIAccelerometer*accelerometer = [UIAccelerometersharedAccelerometer];

//设置加速度传感器的 接收加速度通知的时间间隔

//设置为1.0/60.0表示一秒接收60次,可根据实际需求调整

accelerometer.updateInterval=1.0/60.0;

//下面这个不设置,代理方法就不会调用

accelerometer.delegate=self;

}

-(void)viewWillDisappear:(BOOL)animated

{

[superviewWillDisappear:animated];

//不要忘了停止传感器的工作

//结束加速度传感器的工作

_speedX=_speedY=0;

UIAccelerometer*accelerometer = [UIAccelerometersharedAccelerometer];

accelerometer.delegate=nil;

}

-(void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration

{

//获得的加速度要考虑到加速度传感器的原点是物理重心,而不是屏幕右上角

//x轴方向的速度加上x轴方向获得的加速度

_speedX+= acceleration.x;

//y轴方向的速度加上y轴方向获得的加速度

_speedY+= acceleration.y;

//小方块将要移动到的x轴坐标

CGFloatposX =_label.center.x+_speedX;

//小方块将要移动到的y轴坐标

CGFloatposY =_label.center.y-_speedY;

//碰到屏幕边缘反弹

if(posX <0.0) {

posX =0.0;

//碰到屏幕左边以0.4倍的速度反弹

_speedX*= -0.4;

}elseif(posX >self.view.bounds.size.width){

posX =self.view.bounds.size.width;

//碰到屏幕右边以0.4倍的速度反弹

_speedX*= -0.4;

}

if(posY <0.0) {

posY =0.0;

//碰到屏幕上边不反弹

_speedY=0.0;

}elseif(posY >self.view.bounds.size.height){

posY =self.view.bounds.size.height;

//碰到屏幕下边以1.5倍的速度反弹

_speedY*= -1.5;

}

//移动小方块

_label.center=CGPointMake(posX,

posY);

}

@end

相关文章

  • IOS-加速度传感器(重力感应)-UIAcceleromete

    加速度传感器,就是俗称的重力感应,其实不仅仅可以检测到对重力的感应,它可以捕捉到三个维度的加速度信息。 把iOS设...

  • 19 传感器

    传感器的分类Motion sensors 加速度传感器,重力传感器,陀螺仪Environment sensors ...

  • 传感器开发

    Android 传感器种类: 光照传感器 压力 加速度 == 重力传感器 方向 陀螺仪 磁极 温度 湿度 获取...

  • Android 传感器开发详解

    Android 传感器开发详解 传感器 传感器的分类 方向传感器 陀螺仪传感器 磁场传感器 重力传感器 线性加速度...

  • iOS-重力感应

    原文首发地址iOS-重力感应话不多说,开始上代码(这里是最新的) 1.导入头文件 2.定义变量 3.实例化 4:定...

  • 传感器实现仿微信摇一摇功能

    导语 如今Android手机中,硬件中内嵌了很多传感器(比如加速度传感器,重力传感器,陀螺仪传感器,方向传感器,压...

  • Android手机传感器的简单介绍

    Android手机传感器的使用 1、传感器的分类 动作传感器:加速度传感器、重力传感器、陀螺仪等位置传感器:方向传...

  • UIView根据重力滚动

    需要真机调试 介绍: 运动/加速度传感器 总结 就是观察X,Y,Z轴,跟重力的方向. 如果是垂直,那么加速度为0,...

  • 【22】传感器

    一、什么是传感器? 传感器是手机上的一些用来感应外界环境的组件,相当于人的五感。常用的包括:光照传感器,加速度传感...

  • Mircopython: 在BPIbit上检测板子的姿态

    Document 板子姿态检测 这个模块可以让你获得板子当前的九轴姿态,分别是加速度、重力、磁感应的(X\Y\Z)...

网友评论

    本文标题: IOS-加速度传感器(重力感应)-UIAcceleromete

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