Ich habe festgestellt, dass sich die Farbe der Balkenfarbe in IOS 10 geändert hat. Ich habe ein Beispielprojekt erstellt, in dem die Änderung beschrieben wird: Github : ios10BarTintDemo
Grundsätzlich wird auf ios 9 der barTintColor mit [UIViewControllerTransitionCoordinator animateAlongsideTransition]
aber auf ios 10 sind die Animationen viel weniger flüssig und wenn ein View-Controller überhaupt nicht animiert wird, habe ich versucht, [self.navigationController.navigationBar layoutIfNeeded]
hinzuzufügen, wie in einigen ähnlichen Antworten erwähnt, aber das scheint keine Wirkung zu haben wenn Controller gedrückt / gedrückt werden.
Ich habe in iOS 10.3 getestet und ich denke, das Problem wurde behoben. Und transitionCordinator
ist nicht mehr nötig. Ich denke, die Animation ist glatt. Bitte überprüfe mein Projekt auf github oder sieh dir diesen Code an:
================================================== ================================================= ================================================= ================================================= ================================================= ================================================= ===
Um diese Art von Animation zu erhalten, sollten Sie UIViewControllerTransitionCoordinator
als Apple-Dokumentation verwenden, um es zu sagen:
Ein Objekt, das das UIViewControllerTransitionCoordinator-Protokoll annimmt, bietet Unterstützung für Animationen, die einem View-Controller-Übergang zugeordnet sind. (...)
Also jedes UIViewController
hat eigenes transitionController
. Um dies zu erhalten, sollten Sie UIViewControllerClass
:
self.transitionCoordinator()
Von Dokumentation :
Gibt das aktive Übergangskoordinatorobjekt zurück.
Um das gewünschte Ergebnis zu erhalten, sollten Sie die Methode animateAlongsideTransition
in viewController transitionCoordinator implementieren. Animation funktioniert, wenn Sie auf backButton
klicken und zurück wischen.
Beispiel:
Erster Controller:
%Vor%Zweiter Controller:
%Vor%UPDATE iOS 10
In iOS 10 besteht der knifflige Teil darin, willMoveTo(parentViewController parent: UIViewController?)
im zweiten ViewController hinzuzufügen. Setzen Sie die navigationBar tintColor
auf den Farbwert des vorherigen Controllers. In viewDidAppear
method in zweiten ViewControler setzen Sie navigationBar.tintColor
auf die Farbe von zweiten viewController.
Sehen Sie sich mein Beispielprojekt auf github an
Sie können dieses Problem beheben, indem Sie etwas ähnliches hinzufügen. Das Ausführen in viewWillDisappear funktioniert aus irgendeinem Grund nicht in iOS10
%Vor%Tags und Links objective-c iphone ios animation ios10