2012-05-11 4 views
3

У меня есть uiimage, который вращается с помощью CABasicAnimation. Когда я получаю обновление компаса, я изменяю/обновляю точку начала изображения по смещению по времени.Измените CABasicAnimation, пока его вращающийся iPhone

Это прекрасно работает, но когда я получаю обновление от компаса и удаляю старую анимацию, она возвращается к началу, прежде чем переходить в новое место начала. Это вызывает эффект мигания. Есть ли возможность удалить или добавить анимацию в одно и то же время или предотвратить это?

Мой код до сих пор ниже.

[self.waveImage.layer RemoveAllAnimations]; 

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
animation.fromValue = [NSNumber numberWithFloat:0.0]; 
animation.toValue = [NSNumber numberWithFloat:2.0 * M_PI]; 
animation.duration = 1.0; 
animation.repeatCount = HUGE_VALF; // Repeat forever   
animation.speed = 1.0/duration; 
animation.timeOffset = startingPhase; 
animation.fillMode = kCAFillModeForwards; 

[self.waveImageView.layer addAnimation:animation forKey:@"transform.rotation.z"]; 

ответ

0
+2

Спасибо за ваш комментарий, но я не вижу ничего, что могло бы помочь мне здесь. следовательно, сообщение. я попробовал обернуть его в [Начало CATransaction];/Зафиксировать без везения – Dan

0

Попробуйте это.

  • Избавьтесь от цены. Если вы не укажете значение fromValue, оно использует текущее значение анимации

    Удалите timePhase. Вы хотите оживить новое изменение с начала . timePhase заставит его сменить анимацию.

    Не используйте счетчик повторов. Это приведет к тому, что анимация будет идти от , она начнет заканчиваться, затем отскочит назад и повторится.

    add animation.removedOnCompletion = NO.