上一篇博文介绍的是摇一摇的检测方法,也提过了可以使用加速度传感器来实现,加速度传感器可以捕捉更加高级的加速度动作。而且使用方法也比较简单,有木有!
     加速度传感器,就是俗称的重力感应,其实不仅仅可以检测到对重力的感应,它可以捕捉到三个维度的加速度信息。
     把iOS设备正面朝上放到桌面上,加速度传感器的默认原点在手机的物理重心位置,x,y,z轴分别穿过这个原点,x轴向右为正方向,y轴朝手机顶部为正方向,z轴朝上为正方向,可以通过代理方法来获取相应方向的加速度具体数值。
加速度传感器使用步骤如下:
①召唤UIAccelerometer这个单例;
②设置UIAccelerometer的updateInterval属性,就是设置通知间隔;
③向UIAccelerometer的delegate属性中设置负责具体处理的委托类;
④实现委托方法accelerometer:didAccelerate:以接受加速度的通知;
⑤从accelerometer:didAccelerate:方法的第二个参数UIAcceleration实例的相关属性中获取加速度。
accelerometer:didAccelerate:方法的第二个参数UIAcceleration实例中,分别拥有代表x轴、y轴、z轴方向加速度的属性。
下面是一个使用加速度传感器demo。
程序运行之后,在屏幕中央显示一个绿色小方块,倾斜手机时,方块将向着倾斜的方向运动,碰撞到屏幕顶部后将反弹回来。
//屌丝牌ViewController

@interface DSViewController : UIViewController <UIAccelerometerDelegate>

{

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

UILabel *_label;

//x轴方向的速度

UIAccelerationValue _speedX;

//y轴方向的速度

UIAccelerationValue _speedY;

}

@end

@implementation DSViewController

- (void)viewDidLoad

{

[super viewDidLoad];

self.view.backgroundColor = [UIColor yellowColor];

CGRect winRect = [UIScreen mainScreen].applicationFrame;

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

_label = [[UILabel alloc]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 = [UIColor greenColor];

[self.view addSubview:_label];

[_label release];

}

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

//召唤加速度传感器

UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];

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

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

accelerometer.updateInterval = 1.0/60.0;

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

accelerometer.delegate = self;

}

-(void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:animated];

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

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

_speedX = _speedY = 0;

UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];

accelerometer.delegate = nil;

}

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

{

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

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

_speedX += acceleration.x;

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

_speedY += acceleration.y;

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

CGFloat posX = _label.center.x + _speedX;

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

CGFloat posY = _label.center.y - _speedY;

//碰到屏幕边缘反弹

if (posX < 0.0) {

posX = 0.0;

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

_speedX *= -0.4;

}else if(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;

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

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

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

_speedY *= -1.5;

}

//移动小方块

_label.center = CGPointMake(posX, posY);

}

@end

首尾呼应:加速度传感器使用很easy有木有!

IOS学习笔记-加速度传感器(重力感应)-UIAccelerometer相关推荐

  1. OpenCV for Ios 学习笔记(4)-标记检测1

    本文原始地址:OpenCV for Ios 学习笔记(4)-标记检测1 简单的标记经常是以白色块和黑色块构成的规则图形.因为我们预先知道这些因素,所以我们可以很容易检测标记. 如图: 首先,我们需要找 ...

  2. IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法...

    IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法 Author:hmjiangqq Email:jiangqqlmj@163.com ...

  3. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  4. iOS学习笔记-自己动手写RESideMenu

    代码地址如下: http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars ...

  5. iOS学习笔记-地图MapKit入门

    代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...

  6. iOS学习笔记-自定义过渡动画

    代码地址如下: http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swi ...

  7. IOS学习笔记07---C语言函数-scanf函数

    2013/8/7 IOS学习笔记07---C语言函数-scanf函数 ------------------------------ qq交流群:创梦技术交流群:251572072            ...

  8. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  9. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  10. IOS学习笔记05---C语言程序的开发运行过程

    IOS学习笔记05---C语言程序的开发运行过程 0 5.C语言3-C语言程序的开发运行过程 ----------------------------------------------------- ...

最新文章

  1. 小手段:开启 GNOME 的窗口分组效果
  2. Android Studio 第一次配置及其使用
  3. 随机生成文件名字或随机生成一个数
  4. Xamarin XAML语言教程模板视图TemplatedView(一)
  5. c语言 二级菜单_收下计算机二级秘笈,考场上说好不哭!
  6. 实现dmx512_LED灯具DMX512信号与普通TTL信号区别
  7. 对学校的希望和寄语_放飞青春梦,奋斗十四五——2020年福州文教职业中专学校寄宿生联欢晚会...
  8. matlab最小错误率决策,利用MATLAB实现最小错误率贝叶斯判别
  9. 一个页面是否应该全部组件化
  10. BeautifulSoup解析库select方法实例——获取企业信息
  11. python之twisted模块安装
  12. IOS学习笔记6—Objective C—Foundation框架
  13. php 无刷新上传,php 无刷新上传文件的代码
  14. 学习 openssl 证书命令
  15. 大型电子病历系统【整套源代码分享】
  16. 用74ls00,74ls153,74ls151,74ls138设计三变量表决器
  17. akuna capital oa
  18. Linux重置root密码和Linux基础命令
  19. encode()和decode()编码与解码的解析、常用编码与为何要encode和decode
  20. 【应用安全】“我的QQ被盗,请大家不要相信任何消息.......”

热门文章

  1. 不同网段实现全网互通
  2. 自律给我自由 2017.8.9   心情很好   天气很好
  3. 吃西瓜—先磨刀之概率论
  4. 今日恐慌与贪婪指数为15 恐慌程度小幅上升
  5. 用c语言编写计算器计划报告书,用c语言编写计算器计划报告书.docx
  6. tinyMediaManager 群晖 docker
  7. Android 创建淡入淡出动画的详解
  8. 深度学习之美(张玉宏)——第三章 机器学习三重门
  9. Android9 更改系统默认输入法
  10. word文档中标题跳到表格的下方-解决方法