Я использую следующий код в качестве расширения UINavigationController
для отправки контроллера представления с пользовательской анимацией:
@implementation UINavigationController (PushAnimation)
- (void)pushViewController:(UIViewController*)controller withTransition:(UIViewAnimationTransition)transition
{
[UIView beginAnimations:nil context:NULL];
[self pushViewController:controller animated:NO];
[UIView setAnimationDuration:1.0];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationTransition:transition forView:self.view cache:YES];
[UIView commitAnimations];
}
@end
При включенном кэшировании я получаю странное поведение анимации при нажатии UITableViewController
. Заголовок выталкиваемого представления появляется после завершения пользовательской анимации. Со стилем перехода UIViewAnimationTransitionNone
становится понятно, что сам заголовок анимирован. Он перемещается из верхнего левого угла экрана в центр UINavigationBar
.
При отключенном кэшировании эта анимация не видна из-за ее скорости, но частота кадров значительно падает.
Как предотвратить анимацию заголовка?