天天看點

iOS - CoreMotion前言1、CoreMotion 的建立2、系統震動事件處理方法

對于 iPhone 手機來說,畫面上下為 y 軸,左右為 x 軸,前後為 z 軸。各自向上、向右和前面為正方向。當向上方向有作用力時,y 屬性中設定相應的正值,當向左方向有作用力時,x 屬性中設定相應負值。加速度不僅受震動手機時施加作用力的影響,還會持續受重力的影響。是以手機如果垂直拿在手上的話,y 軸負方向将受重力作用, y 屬性将一直為負值(最小值為 -1.0)。相反,如果畫面的上方向朝向地下,則 y 屬性将一直為正值(最大值為 1.0)。當畫面與地面水準時,y 屬性值為 0 。

加速度傳感器以前用 UIAccelerometer 實作,但 Xcode6 後完全廢棄了 UIAccelerometer,使用 CoreMotion 替代它能監聽到 x、y、z 三個方向的加速度。具體使用步驟如下:

1、引用頭檔案 CoreMotion/CoreMotion.h,執行個體化 CMMotionManager 類。

2、向 CMMotionManager 的 accelerometerUpdateInterval 屬性中設定通知間隔時間值。

3、使用 [NSOperationQueue currentQueue] 建立一個監聽隊列。

4、使用 startAccelerometerUpdatesToQueue 方法更新監聽隊列,并設定回調函數用于接收加速度通知,通知間隔時間已經在第二步設定過。在回調函數中使用 accelerometerData.acceleration 相關屬性可以獲得 x、y、z 各個方向的加速度。accelerometerData.acceleration 擁有代表 x 軸方向加速度的 x 屬性、擁有代表 y 軸方向加速度的 y 屬性、擁有代表 z 軸方向加速度的 z 屬性。

在 iPhone 開發文檔中,推薦使用的通知間隔如下表:

用途

通知間隔

檢測裝置朝向時

1/10 - 1/20

在遊戲中需要實時使用加速度傳感器時

1/30 - 1/60

檢測敲擊裝置或者劇烈搖動裝置的情況下

1/70 - 1/100

Objective-C

Swift

繼續閱讀