У меня была такая же проблема, и я думаю, что нашел решение по этому ТАКому вопросу .
Когда вызывается viewDidAppear, вы все равно ничего не видите на экране (несмотря на название), но вы собираетесь. Затем вы можете использовать executeSelector: withDelay или NSTimer для запуска анимации. Задержка может составлять всего 0,1, и ваша анимация будет воспроизводиться только при появлении экрана.
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"View did appear!");
[self performSelector:@selector(animationCode) withObject:nil afterDelay:0.1f];
}
- (void)animationCode {
// you animation code
}