So ändern Sie die Hintergrundfarbe der Navigationsleiste usw. in der Swift-Benutzeroberfläche

Was du machen willst

Ändern Sie die Hintergrundfarbe der Navigationsleiste in der Swift-Benutzeroberfläche Ich möchte kein "UI-Erscheinungsbild" verwenden (starker Wille)

Fazit

Vorbereitung

import SwiftUI
import UIKit

struct NavigationConfigurator: UIViewControllerRepresentable {
    var configure: (UINavigationController) -> Void = { _ in }

    func makeUIViewController(context: UIViewControllerRepresentableContext<NavigationConfigurator>) -> UIViewController {
        UIViewController()
    }
    func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<NavigationConfigurator>) {
        if let nc = uiViewController.navigationController {
            self.configure(nc)
        }
    }

}

Beispiel für die tatsächliche Verwendung

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("Don't use .appearance()!")
            .navigationBarTitle("Try it!", displayMode: .inline)
            .background(NavigationConfigurator { nc in
                //OK, genauso wie Sie den Stil der Navigationsleiste in UIKit ändern
                nc.navigationBar.barTintColor = .blue
                nc.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.white]
            })
        }
    }
}

Vorschau

ss20201011

Umgebung

Stand 11. Oktober 2020 Xcode 12.0.1 Swift 5.3 Ich weiß es nicht, weil ich insbesondere andere Umgebungen nicht überprüft habe. Ich denke, dass es in einer Umgebung möglich ist, in der Swift UI funktioniert

Ich möchte die Hintergrundfarbe der Navigationsleiste ändern

Als ich es in einigen Artikeln schnell googelte, fragte ich mich vorerst, ob es nur mit "UINavigationBar.appearance ()" möglich wäre, wenn der Konstruktor usw. initialisiert wird.

Natürlich können Sie ändern, was Sie mit "UINavigationBar.appearance ()" ändern können. Es ist schwierig, die Farbe für jeden Bildschirm zu ändern (ich meine, das ist nicht möglich ...)

Vielen Dank, dass Sie Stack Overflow!

SwiftUI update navigation bar title color Jemand hat mir beigebracht, wie man es in ein schönes verwandelt: Lächeln:

Nachteile dieser Methode

Der Stil wird nur wiedergegeben, wenn die Vorschau auf den Live-Modus eingestellt ist Es spielt keine Rolle, da Sie es nur in den Live-Modus versetzen müssen

So konnte ich die Hintergrundfarbe mit UIViewControllerRepresentable schön ändern SwiftUI wächst immer noch, daher denke ich, dass ich dieses Kind meistern muss.

Recommended Posts

So ändern Sie die Hintergrundfarbe der Navigationsleiste usw. in der Swift-Benutzeroberfläche
[Swift] So ändern Sie dynamisch die Höhe der Symbolleiste auf der Tastatur
[swift5] So legen Sie die Farbe hexadezimal fest
So ändern Sie den App-Namen in Rails
So überschreiben Sie Firebase-Daten mit Swift
So ändern Sie die maximale und maximale Anzahl von POST-Daten in Spark
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
[swift5] So ändern Sie die Farbe der TabBar oder die Farbe des TabBar-Elements mit Code
Zusammenfassung der Auswahl von Elementen in Selen
Verwendung von JQuery in Rails 6 js.erb
So führen Sie Aufgaben parallel zu Swift in Swift Package aus
[Swift] So ermitteln Sie die Anzahl der Elemente in einem Array (Super Basic)
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
So beheben Sie einen Absturz beim Löschen von Realm-Daten in der Liste der schnellen Benutzeroberfläche
So implementieren Sie UICollectionView mit Code nur in Swift
[Swift] Farbe in den Benutzerstandards mit der Swift-Benutzeroberfläche speichern (Hinweis)
[Rails] So ändern Sie den Spaltennamen der Tabelle
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Zusammenfassung der Implementierung von Standardargumenten in Java
[Swift] So erhalten Sie die Firebase-Dokument-ID
So starten Sie die Swagger-Benutzeroberfläche und den Swagger-Editor in Docker
So ändern Sie den Einstellungswert von application.properties beim Booten im Frühjahrsstart
Anmerkung: [Java] Überprüfen der in pom.xml beschriebenen groupId usw.
Fotobibliothek mit Swift UI
So ändern Sie den Einstellwert von Springboot Hikari CP
So implementieren Sie eine einzeilige Anzeige von TextView in der Android-Entwicklung
So leiten Sie den letzten Tag des Monats in Java ab
[Sprint Boot] Verwendung der drei in org.springframework.jdbc.core.namedparam definierten Arten von SqlParameterSource
[Swift5] So erhalten Sie ein Array und eine Reihe von Unterschieden zwischen Arrays
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
So löschen Sie große Datenmengen in Rails und Bedenken
So geben Sie eine Liste von Zeichenfolgen in JSF als durch Kommas getrennte Zeichenfolgen aus
[chown] So ändern Sie den Eigentümer einer Datei oder eines Verzeichnisses
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
So ermitteln Sie die Länge einer Audiodatei mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
Wie man Lombok im Frühling benutzt
So finden Sie May'n in XPath
So blenden Sie die Bildlaufleiste in WebView aus
So führen Sie JUnit in Eclipse aus
Wie man in Ruby auf unbestimmte Zeit iteriert
Wie man Ant in Gradle ausführt
Wie man die Programmierung in 3 Monaten beherrscht
Wie man JAVA in 7 Tagen lernt
So erhalten Sie Parameter in Spark
So ändern Sie den kube-proxy in den ipvs-Modus.