Вызов завершения анимации UIView?

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

Ответы

Ответ 1

Да, это легко:

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

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

И определите свой метод следующим образом:

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

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

Ответ 2

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

[UIView animateWithDuration:0.5f
                      delay:0.0f
                    options:UIViewAnimationCurveEaseInOut
                 animations:^{
                   [myView setAlpha:0.0f];
                 }
                 completion:^(BOOL finished) {
                   [myView removeFromSuperview];
                 }];