Вы можете посмотреть на setAnimationBeginsFromCurrentState: . Все анимации запускаются в своих собственных потоках, поэтому [UIView commitAnimations]
является неблокирующим вызовом. Итак, если вы начнете другую анимацию сразу после фиксации первой, после соответствующей установки, начинается ли она с текущего состояния или нет, я думаю, вы получите желаемое поведение. Для остроумия:
[UIView beginAnimation:nil context:nil];
// set up the first animation
[UIView commitAnimations];
[UIView beginAnimation:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:NO];
// set up the second animation
[UIView commitAnimations];
В качестве альтернативы, вы можете предоставить обратный вызов, выполнив что-то вроде
[UIView beginAnimation:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)
// set up the first animation
[UIView commitAnimations];
//...
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
// set up the second animation here
}