Io uso il seguente codice come estensione di UINavigationController
per spingere un controller di vista con un'animazione personalizzata:Spingendo un UITableViewController con animazione personalizzata anima la sempre UINavigationItem Titolo
@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
Con il caching abilitato, ottengo un comportamento di animazione strano quando si preme un UITableViewController
. Il titolo della vista spinta appare dopo che l'animazione personalizzata è stata completata. Con lo stile di transizione UIViewAnimationTransitionNone
, diventa chiaro che il titolo stesso è animato. Viene spostato dall'angolo in alto a sinistra dello schermo al centro di UINavigationBar
.
Con la memorizzazione nella cache disabilitata, questa animazione non è visibile a causa della sua velocità, ma la frequenza fotogrammi diminuisce in modo significativo.
Come si impedisce l'animazione del titolo?
Penso che l'animazione del titolo stia accadendo nel codice 'UINavigationBar'. Un'idea sarebbe quella di sottoclasse anche quella e cambiare il comportamento predefinito – adig