Ändern Sie die Hintergrundfarbe der Navigationsleiste in der Swift-Benutzeroberfläche Ich möchte kein "UI-Erscheinungsbild" verwenden (starker Wille)
.background ()
der Ansicht, die NavigationBar verwendetimport 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)
}
}
}
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]
})
}
}
}
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
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 ...)
SwiftUI update navigation bar title color Jemand hat mir beigebracht, wie man es in ein schönes verwandelt: Lächeln:
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