Aggiungo alcune animazioni di base a un gioco di carte su cui sto lavorando. (La mia prima app per iPhone.)Modifica di una vista contenitore animazione iPhone prima di avviare l'animazione
Sto creando una classe UIView personalizzata "AnimationContainer", che gira da image1 a image2, passando da rect1 a rect2. La mia ultima intenzione è di avere fino a quattro di questi contenitori che eseguono le loro transizioni contemporaneamente.
Il problema che sto avendo è che l'animazione non mostra immagine1 ... quindi appare solo l'ultima metà della transizione di flip.
Tuttavia, se ripristino l'animazione prima toccando Ripristina, allora tutto funziona perfettamente. In altre parole, se premo Flip ancora e ancora, ottengo solo metà della transizione ... ma se premo Inizialmente Reset, allora tutto funziona perfettamente per un flip.
Quindi, come posso ripristinare correttamente l'animazione?
Di seguito è riportato il codice, uno screenshot, ed ecco un collegamento completo: Project Zip File 700k.
alt text http://www.robsteward.com/cardflip.jpg
- (void)displayWithImage1 { //RESET button calls this
self.frame = rect1;
[image2 removeFromSuperview];
[self addSubview:image1];
[self setNeedsDisplay]; //no help: doesn't force an update before animation
}
- (void)runTheAnimation { //FLIP button calls this
[self displayWithImage1]; //<---this is what the reset button calls
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:transition forView:self cache:NO];
self.frame = rect2;
[image1 removeFromSuperview];
[self addSubview:image2];
[UIView commitAnimations];
}
Grazie!
Ho trovato una mezza soluzione brutta. Ho aggiunto un'animazione "fittizia" e ho reso la mia classe un delegato per il suo setAnimationDidStopSelector. L'animazione fittizia ha una durata di 0.0 e sposta semplicemente la vista su rect1. Quando viene chiamato il selettore di stop del manichino, faccio il codice di virgola animato "reale" dall'alto. Completamente funzionale, e sembra che almeno 4 possano funzionare contemporaneamente. Sì, io. LOL – Rob
Risulta che la soluzione alternativa può produrre fino a mezzo secondo di ritardo, quindi sto iniziando una taglia. Ci deve essere un modo per inviare a un container visualizzare due immagini e girarle da una alla successiva in un'unica transizione. – Rob