Подтвердить что ты не робот

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

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

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, равный уменьшенному размеру после первого завершения, но не имел большой удачи.)

Любые советы оценены.

кб

Edit:

Отлично! Установка следующих параметров:

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

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

4b9b3361

Ответ 1

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

Ответ 2

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