Отправка UITableViewController с пользовательской анимацией всегда анимирует заголовок UINavigationItem

Я использую следующий код в качестве расширения 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.

При отключенном кэшировании эта анимация не видна из-за ее скорости, но частота кадров значительно падает.

Как предотвратить анимацию заголовка?

8
задан Sebastian Marr 3 May 2012 в 18:31
поделиться