iOS 10 barTintColor Animation

8

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]

flüssig animiert

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.

    
john_ryan 27.09.2016, 15:21
quelle

2 Antworten

10

AKTUALISIEREN

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:

%Vor%

================================================== ================================================= ================================================= ================================================= ================================================= ================================================= ===

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 :

aufrufen

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

    
kamwysoc 26.10.2016, 22:14
quelle
5

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%     
Alan MacGregor 10.10.2016 21:49
quelle