Come posso ridimensionare le animazioni con un UIImageView per iPhone?
Domanda
Sto cercando di ridimensionare un'immagine, cambiarla, quindi ridimensionarla.
CABasicAnimation* shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
shrink.toValue = [NSNumber numberWithDouble:0];
shrink.duration = 1;
shrink.delegate = self;
[myImageView.layer addAnimation:shrink forKey:@"shrink"];
rende la riduzione, quindi quando completa, cambio l'immagine e inizio la crescita:
- (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"];
}
Funziona benissimo sul simulatore, ma sul dispositivo, al termine della riduzione, ricevo un lampo dell'immagine vecchia a grandezza naturale, quindi l'animazione di crescita inizia con la nuova immagine.
Hai idea di come liberarti di quel flash?
(Ho provato " removeOnCompletion = NO; " e ho provato a impostare affineTransform uguale alla dimensione ridotta dopo il primo completamento, ma non ho avuto molta fortuna.)
Eventuali suggerimenti apprezzati.
kb
Modifica:
Eccellente! Impostare quanto segue:
shrink.fillMode = kCAFillModeForwards;
shrink.removedOnCompletion = NO;
Rimosso il lampeggiamento. Grazie Ben!
Soluzione
Prova a impostare fillMode
della tua animazione su kCAFillModeForwards
. Ciò dovrebbe lasciare l'oggetto com'era alla fine dell'animazione, piuttosto che prima.
Altri suggerimenti
Ho avuto lo stesso problema quando ho provato a creare un'altra CAAnimation nel metodo animationDidStop. Suggerisco di usare CAKeyframeAnimation.