2014-04-04 8 views
10

Quando si utilizza UIPercentDrivenInteractiveTransition gestita da gesti con CABasicAnimation (o qualsiasi altra CAAnimation), al termine diInteractiveTransition, l'animazione salta alla posizione finale, anziché animare in modo uniforme come avviene quando si utilizza l'animazione di blocco UIView. Sto cercando di capire come animare senza problemi al termine dell'InteractiveTransition per terminare quando si utilizza CAAnimation.UIPercentDrivenInteractiveTransition con CABasicAnimation

Ho trascorso un'intera giornata. Non sembra esserci alcun cenno all'utilizzo di CAAnimation con transizioni VC personalizzate, tutti si riferiscono all'animazione basata su blocco UIView.

Ho creato un piccolo progetto di esempio che dimostra il problema.

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

Grazie a tutti coloro che passa il tempo guardando. Lo apprezzo.

+1

Controllare il repository. I file sono mancanti. Il progetto non viene compilato. – RaffAl

+0

Grazie per aver dedicato tempo a guardarlo. Ho risolto il repository, dovrebbe essere tutto buono ora – stringCode

+0

C'è una soluzione migliore per questo problema disponibile? Uno senza sottoclassi di 'UIPercentDrivenInteractiveTransition' o impostazione del proprio' UIViewControllerInteractiveTransitioning'. –

risposta

10

SOLUZIONE

Come risulta soluzione è quello di manipolare livelli iniziano tempo. Ho intenzione di provare a spiegare la soluzione in un po 'più in profondità di seguito. Esistono due soluzioni uno utilizzando la sottoclasse UIPercentDrivenTransition o il protocollo UIViewControllerInteractiveTransitioning. Custom UIViewControllerInteractiveTransitioning si trova sulla diramazione master e l'implementazione UIPercentDrivenTransition si trova sul ramo UIPercentDrivenTransitionImplementation.

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

SPIEGAZIONE

UIPercentDrivenTransition utilizza animazioni in animateTransition: per implementare updateInteractiveTransition:. Sto indovinando che chiamano semplicemente animateTransition: da startInteractiveTransition: e quindi impostano la velocità del livello (forse contenitori vista livello) su 0.0 e ne manipolano il valore timeOffSet. Ciò consente loro di spostare automaticamente la transizione avanti e indietro. Questo lo fa per le tue animazioni di UIView. Il problema con CAAnimations è il loro begingTime, timeOffSet, speed le proprietà non sono impostate correttamente per qualche motivo. Se li imposti su valori sensibili, puoi spostare tutti i contenuti animati in containerView avanti e indietro. Ho creato SCPercentDrivenTransition come alternativa a UIPercentDrivenTransition. Devi solo eseguire l'override di animateTransition e chiamare handleGesture: dalle chiamate di azione dei riconoscitori di gesti.

+0

che grande spiegazione. Grazie – andrei

+1

Penso che potresti essere l'unica persona al mondo che ha implementato UIViewControllerInteractiveTransitioning e ha dimostrato come è possibile utilizzarlo al di fuori della transizione basata sulla percentuale standard. Quindi ti benedica! – hao

Problemi correlati