¿Cómo encadenar animaciones a escala con un iPhone UIImageView?
Pregunta
Estoy tratando de reducir una imagen hacia abajo, cambiar la imagen y luego volver a escalarla.
CABasicAnimation* shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
shrink.toValue = [NSNumber numberWithDouble:0];
shrink.duration = 1;
shrink.delegate = self;
[myImageView.layer addAnimation:shrink forKey:@"shrink"];
hace el encogimiento, luego, cuando se completa, cambio la imagen y comienzo el crecimiento:
- (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"];
}
Esto funciona muy bien en el simulador, pero en el dispositivo, cuando se completa el encogimiento, recibo un destello de la imagen antigua de tamaño completo, luego la animación de crecimiento comienza con la nueva imagen.
¿Alguna idea de cómo deshacerse de ese flash?
(He intentado " removeOnCompletion = NO; & he intentado configurar affineTransform igual al tamaño reducido después de la primera finalización, pero no tuve mucha suerte.)
Cualquier consejo apreciado.
kb
Editar:
¡Excelente! Configurando lo siguiente:
shrink.fillMode = kCAFillModeForwards;
shrink.removedOnCompletion = NO;
Se eliminó el parpadeo. Gracias, Ben!
Solución
Intente configurar el fillMode
de su animación en kCAFillModeForwards
. Eso debería dejar el elemento como estaba al final de la animación, en lugar de antes.
Otros consejos
He tenido el mismo problema cuando intenté crear otro CAAnimation en el método animationDidStop. Sugiero usar CAKeyframeAnimation.