您现在的位置是:首页 > 文章详情

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

日期:2017-05-01点击:396

本节书摘来自异步社区《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的方向,箭头总会指向上方

原文链接:https://yq.aliyun.com/articles/97328
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章