Использование делегата анимации может сделать его менее "хакерским":
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[myLabel setAlpha:0.0];
[UIView commitAnimations];
И тогда вы можете сделать так, чтобы didStopSelector перезапустил анимацию:
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
[self displayLabel];
}
В зависимости от animationID, выможет использовать различные действия и т. д. Использование setAnimationDelay в UIView также может пригодиться.
В UIView также есть вызов setDuration для анимаций:
[UIView setAnimationDuration:0.1];
Если вы создаете для iOS4, проверьтедокументация, поскольку вы должны использовать анимационные вызовы на основе блоков, а не делегированные.