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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top