2012-01-14 14 views
6

Sto cercando di trovare un modo per rilevare se una vista è animata.C'è un modo per rilevare un'animazione in esecuzione in iOS?

Caso in questione: ho applicato un'ombra sul livello di una vista, specificando una shadowPath per le prestazioni. Quando la vista viene ridimensionata, l'ombra dovrebbe animarsi. Posso osservare il frame della vista e modificare di conseguenza il shadowPath del layer. Ma mentre la vista sta ridimensionando, l'ombra salta in avanti poiché la modifica non è animata.

So come animare il shadowPath utilizzando un CABasicAnimation, ma ho bisogno di conoscere le proprietà di un'animazione in corso in modo da poterli applicare anche alla mia animazione (principalmente: durata, andamento).

Questo è in un componente di tipo framework, quindi non posso presumere di conoscere la durata e le proprietà di andamento in anticipo.

C'è un modo per rilevare un'animazione di avvio/esecuzione quando si osserva il fotogramma?

risposta

12

è possibile recuperare tutte le animazioni collegata allo strato particolare di vista sapendo che è fondamentale chiamando

[yourView.layer animationForKey:@"key"] 

per ottenere tutte le chiavi v'è una certa animazione per, chiamare

NSArray* keys = [yourView.layer animationKeys]; 
+0

Ah fantastico. Grazie! – Inferis

0

penso che la migliore pratica dovrebbe be ....

UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.7]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 

.....your code 
// Set animation did stop selector before committing the animations 

[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 

[UIView commitAnimations]; 
Problemi correlati