《iOS 6高级开发手册(第4版)》——1.5节秘诀:使用加速能力“向上”定位
本節(jié)書摘來自異步社區(qū)《iOS 6高級開發(fā)手冊(第4版)》一書中的第1章,第1.5節(jié)秘訣:使用加速能力“向上”定位,作者 【美】Erica Sadun,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“異步社區(qū)”公眾號查看
1.5 秘訣:使用加速能力“向上”定位
iOS 6高級開發(fā)手冊(第4版)
iPhone提供了3個機載傳感器,用于沿著iPhone的3根相互垂直的軸(左/右(x軸)、上/下(y軸)和前/后(z軸))度量加速能力。這些值指示作用于iPhone的力,它們來自重力和用戶移動。可以通過在腦袋周圍晃動iPhone(向心力)或者把它從高樓上投下(自由落體)來獲得某種凈力反饋。當然,如果不幸摔壞了,它也許不能取回這類數(shù)據(jù)。
要向iPhone加速計更新訂閱某個對象,可把它設置委托。設置為委托的對象必須實現(xiàn)UIAccelerometerDelegate協(xié)議:
[[UIAccelerometer sharedAccelerometer] setDelegate:self]在指定時,委托將會接收accelerometer:didAccelerate:回調(diào)消息,可以跟蹤并對其做出響應。發(fā)送給委托方法的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實例,以指向上方。對用戶動作的實時響應確保箭頭會繼續(xù)指向上方,而無論用戶怎樣改變手機的方向。
秘訣1-3 捕獲加速事件
- (void)accelerometer:(UIAccelerometer *)accelerometerdidAccelerate:(UIAcceleration *)acceleration {// Determine up from the x and y acceleration componentsfloat 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; }圖1-1 使用x和y方向的力向量,通過執(zhí)行一個反正切函數(shù),利用一點數(shù)學計算即可恢復“向上”的方向。在這個示例中,無論用戶怎樣改變iPhone的方向,箭頭總會指向上方
總結
以上是生活随笔為你收集整理的《iOS 6高级开发手册(第4版)》——1.5节秘诀:使用加速能力“向上”定位的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntuzilla: 安装最新版Mo
- 下一篇: 《Adobe Flash Profess