iPhone提供了3个机载的传感器,用于沿着iPhone的3根相互垂直的轴(左/右(x轴)、上/下(y轴)和前/后(z轴))度量加速能力。这些值指示作用于iPhone的力,它们来自重力和用户移动。可以通过在脑袋周围晃动iPhone(向心力)或者把它从高楼上投下(自由落体)来获得某种净力反馈。

要向iPhone加速计更新订阅某个对象,可把它设置委托。设置为委托的对象必须实现UIAccelerometerDelegate协议:

    加速度传感器使用步骤如下:
    ①召唤UIAccelerometer这个单例;
    ②设置UIAccelerometer的updateInterval属性,就是设置通知间隔;
    ③向UIAccelerometer的delegate属性中设置负责具体处理的委托类;
    ④实现委托方法accelerometer:didAccelerate:以接受加速度的通知;
    ⑤从accelerometer:didAccelerate:方法的第二个参数UIAcceleration实例的相关属性中获取加速度
    

@interface ViewController ()
{
UIImageView *arrow;
} - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.updateInterval = 10.0/60.0;
accelerometer.delegate =self; arrow = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]];
[self.view addSubview:arrow];
}
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
//Determine up from the x and y acceleration components
float xx = -acceleration.x;
float yy = acceleration.y;
float angle = atan2(yy, xx);
[arrow setTransform:CGAffineTransformMakeRotation(angle)];
}

IOS 特定于设备的开发:使用加速能力“向上定位”的更多相关文章

  1. IOS 特定于设备的开发:UIDevice

    UIDevice类展示了一些关键的特定于设备的属性,包括使用的iPhone ,Ipad或iPod Touch型号.设备名称.以及OS名称和版本. 他是一种一站式解决方案,用于提取出某些系统详细信息.每 ...

  2. IOS 特定于设备的开发:Info.plist属性列表的设置

    应用程序的Info.plist属性列表使你能够在向iTunes提交应用程序时指定应用程序的要求.这些限制允许告诉iTunes应用程序需要哪些设备特性. 每个IOS单元都会提供一个独特的特性集.一些设备 ...

  3. IOS 特定于设备的开发:Core Motion基础

    Core Motion框架集中了运动数据处理.该框架是在IOS 4 SDK中引入的,用于取代accelerometer加速计访问.它提供了对3个关键的机载传感器的集中式监测.这些传感器有陀螺仪.磁力计 ...

  4. IOS 特定于设备的开发:基于加速计的滚动视图

    倾斜滚轮使用设备的内置加速计来控制在UIScrollView的内容周围移动.当用户调增设备时,材料会相应的下落,他不会把视图定位在屏幕上,而是把内容视图滚动到一个新的偏移位置. 创建这个界面的挑战在于 ...

  5. IOS 特定于设备的开发:处理基本方向

    UIDevice类使用内置的orientation属性获取设备的物理方向.IOS设备支持这个属性的7个可能的值. >UIDeviceOrientationUnknown:方向目前未知. > ...

  6. IOS 特定于设备的开发:获取和使用设备姿势(通过手机方向控制3d物体显示)

    利用设备的机载陀螺仪可以实现,当你旋转手机屏幕时,里面的画面不会随着视图更新而移动,以平衡物理运动. 下面例子利用少量简单的几何变换执行该操作.他建立一个运动管理器,订阅设备运动更新,然后基于运动管理 ...

  7. IOS 特定于设备的开发:使用加速器启动屏幕上的对象

    借助一点编程工作,iPhone的机载加速计就可以使对象在屏幕上四处“移动”,实时响应用户倾斜手机的方式.下面的代码就是创建一个动画式的蝴蝶,用户可以使之快速移过屏幕. 使之工作的秘密在于:向程序中添加 ...

  8. IOS 特定于设备的开发:监测Retina支持

    近年来,Apple在其旗舰设备上引入了Retina显示屏.根据Apple的说法,他的像素密度非常高,足以使人眼无法区分单独的像素. UIScreen类提供了一种容易的方式,用于监查当前设备是否提供了内 ...

  9. IOS 特定于设备的开发:检查设备接近度和电池状态

    UIDevice类提供了一些API,使你能够跟踪设备的特征,包括电池的状态和接近度传感器.他们二者都以通知的形式提供更新,可以订阅他们,以便在有重要的更新时通知你的应用程序. 1>启动和禁用接近 ...

随机推荐

  1. Excel 提供数据 更新或者插入数据 通过函数 自动生成SQL语句

    excel 更新数据 ="UPDATE dbo.yt_vehicleExtensionBase SET yt_purchase_date='"&B2&"' ...

  2. VMware vCenter Converter 使用,Error code: 2147549183 (0x8000FFFF) 解决方案

    在实际生产环境中,为了节省成本,会将实体机转换为虚拟机,从而虚拟化. 在公司数据中心环境的中跑VMware vCenter ConverterStandalone Client 4.3,将其中一台on ...

  3. 在PreparedStatement中设置空值

    在PreparedStatement中设置空值 分类: Work&amp Study java2009-09-10 09:56 922人阅读 评论(0) 收藏 举报 nulltypes数据库 ...

  4. mysql安装常见问题(系统找不到指定的文件、发生系统错误 1067 进程意外终止)

    在安装mysql时总是会遇到这样那样的问题,每次重新安装都会花很多时间来排查.在网上其实有很多相关的文章,但很多都只讲了方法,但没讲具体细节问题,导致无法解决问题.其实有时候知道问题的原因,但总是因为 ...

  5. SSDT表详解

    SSDT(system service dispatch table) 系统服务分派表 SSPT(system service parameter table) 系统服务参数表 #pragma pac ...

  6. 关于Centos Linux系统安装Python的问题

    由于最近在研究Python框架Django的使用,安装django扩展没有问题 新建项目  django-admin startproject projectName  如果什么都不修改或者直接创建一 ...

  7. json 的 使用方法以及与数组的区别

    JSON简介,全称是JavaScript Object Notation.它是基于JavaScript编程语言ECMA-262 3rd Edition-December 1999标准的一种轻量级的数据 ...

  8. genToken- Php file

    <?php public function genToken($len = 32, $md5 = true) { # Seed random number generator # Only ne ...

  9. Qt for Windows:使用WinPcap开发高性能UDP服务器

    首先介绍一下WinPcap WinPcap是Windows下一个网络库,性能极其强悍而且能够接收各种包. 大名鼎鼎的WireShark就是基于这个库开发的. 那么这个库性能到底有多高呢. 我测试了UD ...

  10. 转载文章:Windows Azure 七月份更新:SQL 数据库、流量管理器、自动伸缩、虚拟机

    转载文章:Windows Azure 七月份更新:SQL 数据库.流量管理器.自动伸缩.虚拟机 今天上午,我们发布了一些重大的 Windows Azure 更新.这些新的增强功能包括: · SQL 数 ...