0

我有一个 CMMotionManager 设置,其中 deviceMotionUpdateInterval 设置为 100 HZ,如下所示:

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

我正在使用这样的块来从陀螺仪获取偏航值

    [motionManger startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { //get yaw values}];

我还有一个 CABasicAnimation 在同一个块中进行动画处理。我将每个动画的持续时间设置为 0.01 秒。动画是一个圆形进度条,表示设备旋转了多少度。这在 iPhone 5 上完美运行。但是在 iPhone 4 和 4S 等旧设备上,进度条填充与设备旋转的实际度数值之间存在显着延迟。基本上,如果手机快速旋转 180 度,进度条填充速度会慢得多,才能到达 180 度点。在 iPhone 5 上的相同场景中,进度条会瞬间处于 180 度点。

我的问题是,我能做些什么来提高性能,使动画像 iPhone 5 一样流畅且瞬间准确?

4

1 回答 1

0

我刚刚在这里回答了一个类似的问题。

简而言之,block 方法的开销很大,您需要以您选择的时间间隔手动轮询 CMMotionManager。CMMotionManager 类参考中的“运动数据的定期采样”中有详细说明。

于 2013-07-18T06:51:33.563 回答