L’impostazione del selettore di fine animazione, eseguita con setAnimationDidStopSelector, su una classe UIView è estremamente versatile, come già visto in setAnimationDidStopSelector: usi diversi ed avanzati.
Lasciatemi ora che vi mostri una tecnica davvero comoda quando abbiamo animazioni multiple e/o vogliamo gestire delle code (queue) di animazioni.
La tecnica si basa sulla possibilità di impostare un nome, un’identificatico (animationID), alla nostra animazione. È possibile, infatti, scrivere:
1 2 3 | [UIView beginAnimations:@"animazioneSfera" context:nil]; ... [UIView commitAnimations]; |
Questo identificativo può essere opportunamente inviato al selettore che verrà chiamato a fine animazione:
1 2 3 4 5 | [UIView beginAnimations:@"animazioneSfera" context:nil]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; ... [UIView commitAnimations]; |
Il messaggio animationDidStop avrà la seguente sintassi:
1 2 3 4 |
Come vedete il primo parametro è l’animationID dell’animazione che ha terminato il suo ciclo. È quindi possibile realizzare una serie di if/else if su tale parametro, così da controllare in modo centralizzato il flusso delle animazioni:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /*! @method animationDidStop @abstract Fine animazione @discussion Chiamata quando (le) un'animazione/i termina(no) */ - (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { if ([animationID isEqualToString:@"animazioneSfera"]) { // TO DO } else if ([animationID isEqualToString:@"animazioneQuadrato"]) { // TO DO } else if ([animationID isEqualToString:@"animazioneTriangolo"]) { // TO DO } } |








4
Non ci sono commenti per questo Post
Lascia un commento