Я обратился к 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
?