UIView анимация завершения обратного вызова? - PullRequest
13 голосов
/ 02 июля 2010

Можно ли настроить функцию, которая будет вызываться после завершения анимации?Я хочу исчезнуть UIView, а затем удалить его из superView.

Ответы [ 2 ]

37 голосов
/ 02 июня 2011

Анимационные блоки были введены в iOS4. Apple рекомендует использовать их, а новые методы в основном запрашивают блоки завершения, которые заменяют обратные вызовы. Например:

[UIView animateWithDuration:0.5f
                      delay:0.0f
                    options:UIViewAnimationCurveEaseInOut
                 animations:^{
                   [myView setAlpha:0.0f];
                 }
                 completion:^(BOOL finished) {
                   [myView removeFromSuperview];
                 }]; 
25 голосов
/ 02 июля 2010

Да, это просто:

При настройке анимации

[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(myAnimationStopped:finished:context:)];

И определите свой метод как:

-(void)myAnimationStopped:(NSString *)animationID 
                 finished:(NSNumber *)finished
                  context:(void *)context {
   // fancy code here
}

Не обязательно должно быть self и этот метод, конечно.

...