2011-09-19 5 views
6

In iOS L'utilizzo della documentazione di beginAnimation-commitAnimation è sconsigliato. Quindi per animazioni e transizioni ci sono nuovi metodi che fanno uso di^blocchi. Tuttavia quando uso transitionWithView: durata: opzioni: animazioni: completamento ottengo nessuna transizione effects.So se scrivo:L'animazione della transizione UIView non funziona con transitionWithView: durata: opzioni: animazioni: metodo di completamento

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp 
         forView:self.view cache:YES]; 

firstView.hidden = YES; 
secondView.hidden = NO; 
[UIView commitAnimations]; 

funziona, ma se lo faccio nel modo seguente

[UIView transitionWithView:self.view duration:1.0 options 
     UIViewAnimationCurveEaseIn|UIViewAnimationTransitionCurlUp 
     animations:^{ 
      firstView.hidden = YES; 
      secondView.hidden = NO; 
     } completion:NULL 
     ]; 

I non ottenere effetti di transizione. Cosa mi manca?

risposta

18

OK, ho trovato i dettagli impercettibili di cui tutti hanno bisogno per prendere atto dell'animazione e delle transizioni con il metodo disponibile in iOS 4 e versioni successive. Quando si specificano le opzioni di animazione/transizione per il metodo, è necessario usa le costanti con la parola "Opzione" in essa. Così, invece di scrivere

UIViewAnimationCurveEaseIn|UIViewAnimationTransitionCurlUp 

dovremmo scrivere

dopo aver fissato che la transizione ha lavorato bene

+0

Grazie per questa osservazione. Buone informazioni! – GrimmRanger

+0

Ha, bel posto e facile errore da fare con l'autocompletamento ... dove è il tipo di sicurezza quando ne hai bisogno! – bandejapaisa

+0

Oh mio Dio! Ho passato due ore frustranti su questa merda fino a quando ho trovato questo. Apple ha seriamente bisogno di svalutare le versioni "non-option". – rushinge