《iOS 6高级开发手册(第4版)》——1.5节秘诀:使用加速能力“向上”定位

简介:

本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第1章,第1.5节秘诀:使用加速能力“向上”定位,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.5 秘诀:使用加速能力“向上”定位
iOS 6高级开发手册(第4版)
iPhone提供了3个机载传感器,用于沿着iPhone的3根相互垂直的轴(左/右(x轴)、上/下(y轴)和前/后(z轴))度量加速能力。这些值指示作用于iPhone的力,它们来自重力和用户移动。可以通过在脑袋周围晃动iPhone(向心力)或者把它从高楼上投下(自由落体)来获得某种净力反馈。当然,如果不幸摔坏了,它也许不能取回这类数据。

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

[[UIAccelerometer sharedAccelerometer] setDelegate:self]

在指定时,委托将会接收accelerometer:didAccelerate:回调消息,可以跟踪并对其做出响应。发送给委托方法的UIAcceleration结构包含x轴、y轴和z轴的浮点值,每个值的范围为—1.0~1.0:

float x = acceleration.x;
float y = acceleration.y;
float z = acceleration.z;

秘诀1-3使用这些值来帮助确定“向上”的方向。它会计算x和y加速度向量之间的反正切值,返回垂直向上的偏移角度。当接收到新的加速消息时,秘诀将会利用其箭头图片(在图1-1中可以看到它)旋转UIImageView实例,以指向上方。对用户动作的实时响应确保箭头会继续指向上方,而无论用户怎样改变手机的方向。

秘诀1-3 捕获加速事件

- (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)];
}
- (void) viewDidLoad
{
    // Initialize the delegate to start catching accelerometer events
    [UIAccelerometer sharedAccelerometer].delegate = self;
}


818c05dd313195de33c5d9314791d7fe0f99084a

图1-1 使用x和y方向的力向量,通过执行一个反正切函数,利用一点数学计算即可恢复“向上”的方向。在这个示例中,无论用户怎样改变iPhone的方向,箭头总会指向上方

相关文章
|
4月前
|
iOS开发
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
35 1
|
8月前
|
iOS开发
iOS 第三方dSYM定位BUG
iOS 第三方dSYM定位BUG
92 0
|
定位技术 iOS开发
iOS iPhone 修改手机定位虚拟定位
iOS iPhone 修改手机定位虚拟定位
iOS iPhone 修改手机定位虚拟定位
|
定位技术 API 开发工具
iOS开发-百度地图基本定位和罗盘跟随的使用,附加地理编码和反地理编码
iOS开发-百度地图基本定位和罗盘跟随的使用,附加地理编码和反地理编码
130 0
iOS开发-百度地图基本定位和罗盘跟随的使用,附加地理编码和反地理编码
|
定位技术 iOS开发
iOS模拟动态定位的测试方案
iOS模拟动态定位的测试方案
145 0
iOS模拟动态定位的测试方案
|
定位技术 iOS开发
iOS移动应用模拟定位的非侵入式测试方案
iOS移动应用模拟定位的非侵入式测试方案
337 0
iOS移动应用模拟定位的非侵入式测试方案
|
API 开发工具 iOS开发
iOS定位的使用:地理/逆地理编码/判断目标经纬度是否在大陆
iOS定位的使用:地理/逆地理编码/判断目标经纬度是否在大陆
631 0
iOS定位的使用:地理/逆地理编码/判断目标经纬度是否在大陆
|
测试技术 定位技术 开发工具
iOS设备限制境外定位(支付交易风险控制策略)
iOS设备限制境外定位(支付交易风险控制策略)
271 0
iOS设备限制境外定位(支付交易风险控制策略)