Articoli con Tag ‘setAnimationDelegate’

setAnimationDidStopSelector: usi diversi ed avanzati

Nella maggioranza dei casi, o perchè siamo abituati o perchè l’abbiamo visto in tutorial e in alcuni testi, utilizziamo il setAnimationDidStopSelector in questa maniera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(removeView)];
 
myView.alpha = 0;
 
[UIView commitAnimations];

//

- (void) removeView {
    [myView removeFromSuperview];
}

Nel codice sopra esposto la setAnimationDelegate imposta self come delegato e tramite la setAnimationDidStopSelector gli invia un messaggio removeView quando l’animazione è terminata. Il codice è di per sé corretto, tuttavia fa uso di una definizione di messaggio (removeView) che potrebbe essere omessa. Guardate adesso lo stesso codice, con il medesimo effetto, senza il messaggio removeView:

1
2
3
4
5
6
7
8
9
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:myView];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];
 
myView.alpha = 0;
 
[UIView commitAnimations];

La cosa interessante di questo approccio è che myView potrebbe essere una sottoclasse di una UIView! Potrebbe quindi essere una nostra classe personalizzata con propri messaggi ed, nel modo esposto, tranquillamente richiamabile da setAnimationDidStopSelector. Inoltre, la setAnimationDidStopSelector accetta selettori con parametri:

1
2
3
4
5
6
7
8
9
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:myView];
[UIView setAnimationDidStopSelector:@selector(myMessage:param1:)];
 
myView.alpha = 0;
 
[UIView commitAnimations];

Questo esempio può essere esteso a tutti qui casi dove impostiamo un delegato che, atro non è, che un puntatore ad un’istanza di un oggetto qualsiasi.

Continua...