Navigationsleiste mit verschiedenen Farben in jedem View-Controller wie Twitter (nicht mit setbartintcolor)

8

Wie Sie auf dem Bild unten sehen können, verwenden Sie für jeden View-Controller, der gedrückt wird, eine andere Farbe für die Navigationsleiste.

Ich habe fast alles ausprobiert (setbackgroundimage, backgroundcolor, bartinctcolor, etc) aber nichts scheint zu funktionieren. Was ich denke ist, dass Twitter einen benutzerdefinierten Übergang zur SIMULATION des Pushs verwendet, denn was mir scheint ist, dass jeder View-Controller präsentiert wird, hat seine eigene Navigationsleiste mit seiner eigenen Farbe.

    
Monte 30.09.2014, 23:11
quelle

4 Antworten

2

Twitter ändert nicht die Navigationsleiste color . Wenn Sie sich das Profil eines Nutzers ansehen, handelt es sich um eine unscharfe Version des Coverfotos des Nutzers.

Wie Sie im Übergang sehen können, ersetzt die gesamte Benutzerprofilansicht die vorherige Ansicht. Die Navigationsleiste ändert sich nicht, sie wird ersetzt. Sie verwenden möglicherweise nicht einmal eine UINavigationBar (oder zumindest nicht die vom Navigationscontroller).

Die "Leiste" ist eine benutzerdefinierte Ansicht, die das Coverfoto des Benutzers zeigt, wobei die Schaltflächen "Zurück" / "Suchen" und "Tweet" an ihren üblichen Positionen angezeigt werden. Das Titelbild des Benutzers wird verkleinert, verwischt und an den oberen Bildschirmrand angehängt, wenn Sie nach unten gescrollt haben. An dieser Stelle sieht es wie eine normale Navigationsleiste aus. Der Name des Benutzers und die Anzahl der Tweets scrollen an dieser Stelle ebenfalls bis zur Mitte der Navigationsleiste.

Es ist ziemlich faszinierend, und ihre gesamte Ansichtsstruktur für ein Benutzerprofil verwendet wahrscheinlich eine Reihe von Tricks. Aber es ist nicht gerade eine einfache Aufgabe, ihre Profilansicht zu imitieren, und sie tun viel mehr, als nur den Farbton ihrer Navigationsleiste zu ändern. Wenn Sie das nur tun möchten, funktioniert die Antwort von Undo gut. Möglicherweise müssen Sie jedoch auch die Farbe des Farbtons in Ihrer viewWillAppear -Methode (der alten und der neuen Ansicht) zurücksetzen.

    
ttarik 30.09.2014, 23:43
quelle
4

Wenn Sie navigationBar mit verschiedenen barTintColor s behandeln wollen, hat Code School ein Tutorial dazu. ( iOS App: Erstellen einer benutzerdefinierten Navigationsleiste ) Es könnte auch auf andere Hintergründe erweitert werden, indem Sie setBackgroundImage:forBarMetrics: method verwenden.

Es gibt folgende vier Schritte:

  1. Behandle dies in viewWillAppear des Quellansicht-Controllers, verberge die navigationBar , die navigationController bereitgestellt haben, und erstelle eine neue navigationBar für die superView .

    %Vor%
  2. Machen Sie den gleichen Trick in viewWillAppear des Zielansicht-Controllers und erstellen Sie ein backBarButtonItem als neues navigationBar 's leftBarButtonItem .

    %Vor%
  3. Füllen Sie die backTapped: -Methode aus, damit der Benutzer vom Zielansicht-Controller aus auf den Popup-Vorgang tippen kann.

    %Vor%
  4. In Anbetracht der Swipe-to-Pop-Situation wurde der Vertreter des Gestenerkenners auf self in viewWillAppear des Zielansicht-Controllers gesetzt. (Der Autor: Die Lösung hier ist ein bisschen ein Hack.)

    %Vor%
Azules 03.01.2015 00:27
quelle
2

Dies für swift3:

  1. Sie können den ursprünglichen Navigationsleistenhintergrund mit einem leeren Bild festlegen:

    %Vor%
  2. Damit werden alle anderen VC in der Ansichtshierarchie eine transparente Navigationsleiste übernehmen.

  3. In der anderen VC, wenn Sie ein benutzerdefiniertes Bild oder eine benutzerdefinierte Farbe festlegen möchten, legen Sie einfach eine Hintergrundansicht in der Position der Navigationsleiste, dies in der Ansicht geladen Methode des jeweiligen View-Controller.

    %Vor%

Mit diesem können Sie einen Hintergrund oder ein Bild innerhalb der viewNavBar setzen und sich nicht mit der Gesamtkonfiguration der Navigationsleiste anlegen.

    
Giovanny Piñeros 11.02.2017 16:54
quelle
0

Versuchen Sie, dieses GitHub Repo nachzuschlagen, ich denke, es könnte Ihnen helfen, diesen Effekt Ссылка

zu erreichen     
John 21.04.2016 14:55
quelle