0

我有一個CMMotionManager設置與deviceMotionUpdateInterval設定在像100 HZ這樣:CABasicAnimation性能問題阻止

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一樣平滑和瞬間準確?

+0

使用工具來弄清楚發生了什麼。您可能正在爭奪CPU。 iPhone 5擁有雙核心CPU,因此它確實是多線程的。 iPhone 4,我猜測,動畫無法啓動,因爲我們一直在通過對你的偏航更新塊的呼叫而受到打擊。 – matt 2013-03-22 20:50:46

+0

你能建議在儀器中準確地監測什麼嗎? CPU時間?動畫幀率? – thisiscrazy4 2013-03-22 22:08:44

+0

是的,我認爲你可以做一個時間分析器,看看什麼是放慢動畫。 – matt 2013-03-22 23:46:36

回答

0

我剛剛回答了一個類似的問題here

簡而言之,塊方法具有相當大的開銷,並且您需要以您選擇的時間間隔手動輪詢CMMotionManager。詳細信息請參見CMMotionManager類參考中的「運動數據的週期性採樣」。