0

次のように、deviceMotionUpdateInterval を 100 HZ に設定して CMMotionManager をセットアップしています。

motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 1/100.0;

ジャイロスコープからヨー値を取得するために、そのようなブロックを使用しています

    [motionManger startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { //ヨー値を取得}];

同じブロックでアニメーション化されている CABasicAnimation もあります。各アニメーションの長さを 0.01 秒に設定しています。アニメーションは、デバイスが回転した角度を表す円形のプログレス バーです。これは iPhone 5 では完全に機能します。ただし、iPhone 4 や 4S などの古いデバイスでは、プログレス バーがいっぱいになってからデバイスが回転した実際の角度値までにかなりの遅延があります。基本的に、電話が 180 度回転した場合、プログレス バーは 180 度のポイントに到達するのが遅くなります。iPhone 5 での同じシナリオでは、プログレス バーは瞬時に 180 度になります。

私の質問は、iPhone 5 のようにアニメーションがスムーズで瞬時に正確になるようにパフォーマンスを向上させるにはどうすればよいでしょうか?

4

1 に答える 1

0

ここで同様の質問に答えました。

つまり、ブロック メソッドにはかなりのオーバーヘッドがあり、選択した間隔で CMMotionManager を手動でポーリングする必要があります。詳細は、CMMotionManager クラス リファレンスの「モーション データの定期的なサンプリング」を参照してください。

于 2013-07-18T06:51:33.563 に答える