Ich verwende den folgenden Code als Erweiterung von UINavigationController
, um einen View-Controller mit einer benutzerdefinierten Animation zu verschieben:
Wenn Caching aktiviert ist, erhalte ich ein seltsames Animationsverhalten, wenn ich UITableViewController
drücke. Der Titel der Push-Ansicht wird angezeigt, nachdem die benutzerdefinierte Animation abgeschlossen wurde. Mit dem Übergangsstil UIViewAnimationTransitionNone
wird klar, dass der Titel selbst animiert ist. Es wird von der oberen linken Ecke des Bildschirms in die Mitte von UINavigationBar
verschoben.
Wenn das Caching deaktiviert ist, ist diese Animation aufgrund ihrer Geschwindigkeit nicht sichtbar, aber die Bildrate sinkt erheblich.
Wie kann ich verhindern, dass der Titel animiert wird?
Nur ein kurzes Update, was meine Lösung am Ende war. Es war nicht möglich, das Standardverhalten von UINavigationBar
zu überschreiben, da iOS die private API zur Implementierung der Animation verwendet. Also habe ich am Ende alle Animationen von UINavigationBar
und seinen verschiedenen Unteransichten entfernt, indem ich den folgenden Code benutzt habe:
Es ist wichtig, dass dies nach [self pushViewController:controller animated:NO];
aufgerufen wird.
Das Problem ist, dass Sie animieren ganze Ansicht self.view
. self.view
enthält den View-Controller sowie die UINavigationBar
. Daher müssen Sie wahrscheinlich alle Unteransichten von self.view
aufrufen und dann nur die view
für Ihren View-Controller animieren.
Verwenden Sie diesen Code, um Ihre Navigationsübergangsanimation sehr einfach anzupassen:
%Vor%und das Gleiche für Push.
** Stellen Sie sicher, dass #import <QuartzCore/QuartzCore.h>
in Ihrer Klasse vorhanden ist, und fügen Sie das Framework auch zu Ihrem Projekt hinzu
Ziel & gt; Buildphasen & gt; Link Binary mit Bibliotheken & gt; der "+" Knopf & gt; QuartzCore.framework
. **
Tags und Links objective-c ios animation uinavigationcontroller uinavigationitem