Как мне объединить масштабируемые анимации в цепочку с помощью iPhone UIImageView?

StackOverflow https://stackoverflow.com/questions/617992

Вопрос

Я пытаюсь уменьшить масштаб изображения, изменить его, а затем снова увеличить.

CABasicAnimation* shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
shrink.toValue = [NSNumber numberWithDouble:0];
shrink.duration = 1;
    shrink.delegate = self;
    [myImageView.layer addAnimation:shrink forKey:@"shrink"];   

производит сжатие, затем, когда оно завершается, я меняю изображение и начинаю увеличивать:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{
    myImageView.image = [images objectAtIndex:image];
CABasicAnimation* grow = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
grow.toValue = CGAffineTransformMakeScale(1,1);
    grow.delegate = self;
grow.duration = 1;
[myImageView.layer addAnimation:grow forKey:@"grow"];   
}

Это отлично работает на симуляторе, но на устройстве, когда сжатие завершается, я получаю вспышку полноразмерного старого изображения, затем начинается анимация увеличения с новым изображением.

Есть какие-нибудь идеи, как избавиться от этой вспышки?

(Я пробовал "removedOnCompletion = NO;" и попытался установить AffineTransform равным уменьшенному размеру после первого завершения, но не очень повезло.)

Любые советы приветствуются.

кб

Редактировать:

Превосходно!Настройка следующего:

shrink.fillMode = kCAFillModeForwards; 
shrink.removedOnCompletion = NO; 

Убрал мигание.Спасибо, Бен!

Это было полезно?

Решение

Попробуйте настроить параметры вашей анимации fillMode Для kCAFillModeForwards.Это должно оставить элемент таким, каким он был в конце анимации, а не раньше.

Другие советы

У меня была такая же проблема, когда я попытался создать другой CAAnimation в методе animationDidStop.Я предлагаю использовать CAKeyframeAnimation.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top