Benutzerdefinierte Titelansicht auf UINavigationController wird nicht korrekt animiert

8

Ich mache hier wahrscheinlich etwas falsch, weil das ein bisschen blöd aussieht.
Ich richte eine benutzerdefinierte Titelansicht (in Form eines UILabel) auf meinem UINavigationController ein, die auf jeder Seite gleich ist. Um dies zu erleichtern, habe ich in meinem App-Delegaten eine Funktion erstellt, um das Label korrekt anzuzeigen. Ich rufe diese Funktion dann auf allen Unteransichten auf, nachdem ich sie auf den Navigationsstapel geschoben habe.
Hier ist der Code (der wahrscheinlich mehr Sinn macht als meine Erklärung):

%Vor%

Mein Problem ist, dass, wenn ich den nächsten View-Controller auf den Stapel schiebe und der neue Controller über die gesamte Dauer der Animation gleitet, das Label links oben bleibt, bevor es nach dem Ende der Animation schließlich einrastet . Es sieht wirklich komisch und hässlich aus. Wie kann ich das Etikett richtig einrichten, damit es problemlos aus der nächsten Ansicht herausgleitet? Sicher ist es etwas Einfaches, dass ich vermisse ...

    
death_au 13.09.2010, 00:27
quelle

3 Antworten

0

Was ich am Ende gemacht habe, war ein Bild mit dem Text als Hintergrund für die Kopfzeile zu verwenden. Anstatt also so flüssig zu animieren, wie ich es ursprünglich wollte, animiert es überhaupt nicht.
Wenn man bedenkt, dass es überall die gleiche Richtung ist, ist es keine große Sache.

    
death_au 21.03.2011, 01:14
quelle
3

Eine sehr späte Antwort auf diese Frage, aber ich stieß nur auf das gleiche Problem und fand einen anderen Weg, es zu lösen, ohne ein Bild zu verwenden. Ich dachte, ich würde meine Lösung teilen, da es jemandem helfen könnte.

In meinem Fall setze ich ein benutzerdefiniertes UILabel als Titelansicht, und mir wurde klar, dass es nur dann richtig animiert wird, wenn ich die Eigenschaft titleview in der Methode viewDidLoad einstelle. In einigen Fällen kannte ich den Titel noch nicht in meiner ViewDidLoad (in einigen Fällen musste ich zum Beispiel einen Titel von einer HTTP-Anfrage verwenden). Also, meine Lösung für diese Fälle war, die titleview-Eigenschaft zu meinem customlabel mit Text @ "" in viewDidLoad zu setzen, und wann immer ich den echten Titel bekam, änderte ich nur die Texteigenschaft meines kundenspezifischen Kennsatzes.

%Vor%     
ylva 29.08.2011 16:58
quelle
0

Ich befand mich in einer ähnlichen Situation wie ylva und verwendete eine Instanz einer benutzerdefinierten Textklasse für die Eigenschaft UINavigationItem's titleView . Allerdings habe ich festgestellt, dass die Konfiguration in viewDidLoad den Animationsfehler nicht auflöst.

Um dieses Problem zu umgehen, musste ich warten, bis der fragliche Ansichts-Controller vom Stack des Navigations-Controllers entfernt wurde. Zu diesem Zeitpunkt muss UINavigationItem's custom titleView entfernt werden, damit er überhaupt nicht animiert werden muss.

Wenn meine Unterklasse UINavigationController die Nachricht popViewControllerAnimated: empfängt, kopiere ich den Titeltext aus meinem benutzerdefinierten Textfeld ( UINavigationItem's titleView ) in die Eigenschaft UINavigationItem's title und setze die titleView Eigenschaft zu Null. Dann geht der UINavigationController voran und springt vom View-Controller, und nur das Titellabel der Standard-Navigationsleiste ist animiert (nicht mein benutzerdefinierter Titel), glitch free.

    
user2067021 23.02.2015 04:54
quelle