Como eu cadeia animações escala com um UIImageView iPhone?
Pergunta
Eu estou tentando dimensionar um baixo imagem, mudar a imagem, em seguida, escalá-lo de volta.
CABasicAnimation* shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
shrink.toValue = [NSNumber numberWithDouble:0];
shrink.duration = 1;
shrink.delegate = self;
[myImageView.layer addAnimation:shrink forKey:@"shrink"];
faz com que o psiquiatra, então quando ela for concluída, eu mudar a imagem, e começar a crescer:
- (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"];
}
Isso funciona muito bem no simulador, mas no dispositivo, quando da conclusão do psiquiatra, eu recebo um flash do full-size, imagem antiga, então a animação crescer começa com a nova imagem.
Qualquer idéia de como se livrar de que o flash?
(eu tentei "removedOnCompletion = NO;". E tentativa de definir o AffineTransform igual ao tamanho reduzido após a primeira conclusão, mas não teve muita sorte)
Todas as dicas apreciado.
kb
Editar:
Excelente! Definir o seguinte:
shrink.fillMode = kCAFillModeForwards;
shrink.removedOnCompletion = NO;
Removido o piscar. Obrigado, Ben!
Solução
Tente configurar fillMode
de sua animação para kCAFillModeForwards
. Isso deve deixar o item como era no final da animação, em vez de antes.
Outras dicas
Eu tive o mesmo problema quando eu tentei criar um outro CAAnimation no método animationDidStop. Eu sugiro usar CAKeyframeAnimation.