Что именно делает параметр bool в animateWithDuration:animations:completion:

Я обратился к DOC, и там сказано:

completion
... Этот блок не имеет возвращаемого значения и принимает единственный булевский аргумент, который указывает, действительно ли анимация завершилась до вызова обработчика завершения. ...

Но я обнаружил, что независимо от того, используете вы параметр bool или нет, блок completion: всегда будет выполняться после блока animations:. Подобно двум простым фрагментам кода анимации на основе блоков, показанным ниже, оба они выполняют одно и то же.

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

и

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

И я обнаружил, что большинство людей (включая меня) используют первый (даже в официальном документе Apple). Итак,

  • для чего именно здесь используется параметр finished?
  • или в какой ситуации он будет использоваться?

65
задан Kjuly 31 December 2011 в 07:18
поделиться

0 ответов