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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top