2011-12-19 14 views
17

In TwUI, c'è un metodo chiamato redraw su TUIView. Costringe la vista a ridisegnare, ma include anche un'animazione dissolvenza libera tra il vecchio e il nuovo stato della vista.Ridisegnare un UIView con un'animazione dissolvenza?

Mi chiedo se qualcosa del genere sia possibile in un normale UIView. In sostanza, come posso ridisegnare la vista (setNeedsDisplay) con un'animazione dissolvenza tra il vecchio e i nuovi stati?

+0

Questa domanda è simile, ma non proprio quello che sto cercando: http://stackoverflow.com/questions/4730110/i-want-to-animate-in-fact-fade-within-drawrect –

+0

Che cosa hai bisogno di essere diverso da quell'altra domanda? –

+0

Questa domanda sembra rispondere solo alla dissolvenza in una vista, non aggiornando una vista con una transizione di dissolvenza. –

risposta

38

Utilizzare +[UIView transitionWithView:duration:options:animations:completion:] con l'opzione UIViewAnimationOptionTransitionCrossDissolve, e all'interno del blocco animazione, forzare strato della visualizzazione di ridisegnare immediatamente il contenuto.

[myView setNeedsDisplay]; 
[UIView transitionWithView:myView duration:1 
    options:UIViewAnimationOptionTransitionCrossDissolve 
    animations:^{ 
     [myView.layer displayIfNeeded]; 
    } completion:nil]; 
+1

Sei l'uomo! Ha funzionato perfettamente Dovrei davvero rispolverare la mia animazione core, non dovrei? –

+0

Ah ah, forse. Ho imparato un * sacco * dal * [Core Animation Essentials] (https://developer.apple.com/videos/wwdc/2011/#core-animation-essentials) * video del WWDC 2011. Ma per la tua domanda ho anche dovevo scrivere un piccolo programma di test che modificasse la proprietà dei contenuti di un CALayer creato dal codice e vedesse quale animazione allegava. –

+0

Grazie per questo link, lo guarderò qualche volta. Ho anche comprato il libro * Core Animation * di Zarra & Long, ma mi vergogno di dire che non l'ho ancora letto. È ora di fare una pausa di lettura! :) –

1

Come utilizzare una transizione UIView a dissolvenza incrociata?

[UIView transitionWithView:aView 
        duration:TIME_INTERVAL 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        // Change the view's state 
       } 
       completion:^(BOOL finished) { 
        // Completion block 
       }]; 
Problemi correlati