Я пытался сделать короткую анимацию, которая на полпути переворачивается статическим методом, который может вызываться моими контроллерами представления. Это отлично работает.
Но мне нужно, чтобы он выполнял селектор, когда происходит обратное, по существу, в середине анимации. Метод setAnimationDidStopSelector срабатывает только после завершения всей анимации, а не в середине.
Итак, я разделил анимацию на два блока. Однако, когда я делаю это, первая анимация мгновенно завершается, а затем происходит вторая. Я подозреваю, что это потому, что анимация на том же виде. Возможно, не может быть двух отдельных блоков анимации для одного и того же представления?
Я установил второй блок с другим именем анимации и с соответствующей задержкой и даже попытался установить setAnimationBeginsFromCurrentState (даже если это не рекомендуется в OS 4), но ни один из них не решил проблему.
Вот пример кода, чтобы получить представление об одном из способов, которые я пробовал. 'селектор' - это метод, который мне нужно вызывать на полпути (после того, как альфа станет прозрачной).
[UIView beginAnimations:name context:view];
[UIView setAnimationDuration:(duration/2)];
[UIView setAnimationDelegate:delegate];
[UIView setAnimationDidStopSelector:selector];
[view setAlpha:0.0];
[UIView commitAnimations];
name = [name stringByAppendingString:@"_reverse"];
[UIView beginAnimations:name context:view];
[UIView setAnimationDelay:(duration/2)];
[UIView setAnimationDuration:(duration/2)];
[UIView setAnimationDelegate:delegate];
[UIView setAnimationDidStopSelector:selector];
[view setAlpha:1.0];
[UIView commitAnimations];
Редактировать: я хочу избегать анимационных «блоков», так как я хотел бы, чтобы код был совместим с pre-OS4. Я также хотел бы сохранить метод статичным, чтобы я мог использовать его как библиотечный метод.