2013-02-08 11 views
6

E 'abbastanza facile per animare la vista:fade in e fade out un UIView mentre è in movimento

[UIView animateWithDuration:1.0 
        animations:^{theView.center = newCenter; theView.alpha = 0;} 
        completion:^(BOOL finished){ 
         [theView removeFromSuperview]; 
        }]; 

il problema è che quando aggiungo come una visualizzazione secondaria, voglio che fade in e già guardare come se si stesse muovendo. In questo momento appare immediatamente, poi si muove e svanisce.

Quindi, ho bisogno di impostare il suo alfa iniziale a zero, dissolvenza veloce mentre è in movimento, quindi svanire. Questo è possibile con le animazioni di UIView? Non posso avere due blocchi di animazione in competizione che lavorano sullo stesso oggetto, giusto?

+0

io non ti seguo: Il tuo il codice è tipico nell'esempio "slide and fade out". Ma poi parli di "quando lo aggiungo come sottoview". Lo stai aggiungendo? O rimuovendolo? Ma, in risposta alla tua domanda, non dovresti aver bisogno di più blocchi di animazione. È solo una questione di cosa stai cercando di fare. – Rob

+0

Ecco un post simile con molte buone risposte di animazione: http://stackoverflow.com/questions/5040494/objective-c-ios-development-animations-autoreverse – escrafford

risposta

12

Tutto ciò che devi fare è applicare 2 animazioni back-to-back. Qualcosa di simile a questo ::

theView.alpha = 0; 
[UIView animateWithDuration:1.0 
       animations:^{ 
        theView.center = midCenter; 
        theView.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        [UIView animateWithDuration:1.0 
             animations:^{ 
              theView.center = endCenter; 
              theView.alpha = 0; 
             } 
             completion:^(BOOL finished){ 
              [theView removeFromSuperview]; 
             }]; 
       }]; 

Così nel 1 ° secondo apparirà mentre si muove e poi nel secondo successivo sarà fade out

Spero che questo aiuti

+0

Questo dovrebbe funzionare, anche se richiede un punto centrale extra da calcolare. Ho finito per usare un'animazione CABasic per il movimento e un'animazione UIView per l'alfa. – soleil

2

Mettere il blocco di animazione alfa = 0 esterno iniziale.

theView.alpha = 0; 
[UIView animateWithDuration:1.0 
       animations:^{ 
        theView.center = newCenter; 
        theView.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        // Do other things 
       }]; 
+1

Questo funziona per la dissolvenza in entrata ma non so perché non funziona per la dissolvenza.? – Envil

Problemi correlati