Artigos com a tag 'setAnimationDelegate'

setAnimationDidStopSelector: diferentes usos e avançado

Na maioria dos casos, ou porque estamos acostumados ou porque vimos em tutoriais e em alguns textos, usamos o setAnimationDidStopSelector desta maneira:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
nil context : NULL ] ; [UIView beginAnimations: contexto nulo: NULL];
1.5 ] ; [UIView setAnimationDuration: 1,5];
UIViewAnimationCurveEaseInOut ] ; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
self ] ; [SetAnimationDelegate UIView: auto];
@selector ( removeView ) ] ; [UIView setAnimationDidStopSelector: @ selector (removeView)];

; myView.alpha = 0;

; [UIView commitAnimations];

/ /

void ) removeView { - (Void) {removeView
; [MyView removeFromSuperview];
}

come delegato e tramite la setAnimationDidStopSelector gli invia un messaggio removeView quando l'animazione è terminata. No código acima o setAnimationDelegate definir self como delegado e através setAnimationDidStopSelector envia uma mensagem removeView quando a animação for concluída. O próprio código é correcta, no entanto, faz uso de uma definição de mensagem ( removeView ), que pode ser omitida. Agora, aqui é o mesmo código, com o mesmo efeito, sem a mensagem de removeView :

1
2
3
4
5
6
7
8
9
nil context : NULL ] ; [UIView beginAnimations: contexto nulo: NULL];
1.5 ] ; [UIView setAnimationDuration: 1,5];
UIViewAnimationCurveEaseInOut ] ; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
myView ] ; [SetAnimationDelegate UIView: myView];
@selector ( removeFromSuperview ) ] ; [UIView setAnimationDidStopSelector: @ selector (removeFromSuperview)];

; myView.alpha = 0;

; [UIView commitAnimations];

! A coisa interessante sobre esta abordagem é que myView poderia ser uma subclasse de UIView ! Portanto, pode ser uma classe personalizada com as nossas próprias mensagens e, na forma definida, discretamente chamado por setAnimationDidStopSelector . Além disso, os setAnimationDidStopSelector seletores de acordo com parâmetros:

1
2
3
4
5
6
7
8
9
nil context : NULL ] ; [UIView beginAnimations: contexto nulo: NULL];
1.5 ] ; [UIView setAnimationDuration: 1,5];
UIViewAnimationCurveEaseInOut ] ; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
myView ] ; [SetAnimationDelegate UIView: myView];
@selector ( myMessage : param1 : ) ] ; [UIView setAnimationDidStopSelector: @ selector (myMessage: param1 :)];

; myView.alpha = 0;

; [UIView commitAnimations];

Este exemplo pode ser estendido para todos os casos aqui onde nós definir um delegado, atro não é um ponteiro para uma instância de qualquer objeto.

Leia mais ...


Pare SOPA