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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top