Измените CABasicAnimation во время вращения iPhone

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

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

Мой код пока ниже.

[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"];

person Dan    schedule 11.05.2012    source источник


Ответы (2)


здесь можно подробно посмотреть

https://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CABasicAnimation_class/Introduction/Introduction.html

person Saad    schedule 11.05.2012
comment
Спасибо за ваш комментарий, но я не вижу здесь ничего, что могло бы мне помочь. отсюда и пост. я попытался обернуть его в [CATransaction begin]; / Зафиксировать без везения - person Dan; 11.05.2012

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

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

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

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

    добавить анимацию.removedOnCompletion = НЕТ.

person Duncan C    schedule 13.05.2012