Changer la couleur d'arrière-plan de la barre de navigation dans Swift UI Je ne veux pas utiliser ʻUI Appearance` (forte volonté)
--Changed BackgroundColor de NavigationBar sans utiliser ʻUINavigationBar.appearance () --
Créez une vue dont vous souhaitez modifier le style de NavigationBar avec UIViewControllerRepresentable`
.background ()
de la vue qui utilise NavigationBarimport 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 de la même manière que changer le style de NavigationBar dans UIKit
nc.navigationBar.barTintColor = .blue
nc.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.white]
})
}
}
}
Au 11 octobre 2020 Xcode 12.0.1 Swift 5.3 Je ne sais pas car je n'ai pas vérifié d'autres environnements en particulier. Je pense que c'est possible dans un environnement où Swift UI fonctionne
Pour le moment, quand je l'ai googlé rapidement, dans certains articles, je me suis demandé si cela ne pouvait être fait qu'avec ʻUINavigationBar.appearance () `lors de l'initialisation du constructeur etc ...: sob:
Vous pouvez certainement changer ce que vous pouvez changer avec ʻUINavigationBar.appearance () `, Il est difficile de changer la couleur de chaque écran (je veux dire, ce n'est pas possible ...)
SwiftUI update navigation bar title color Quelqu'un m'a appris à le changer en un joli: sourire:
Le style n'est pas reflété sauf si l'aperçu est défini sur le mode en direct Ce n'est pas grave car il suffit de le mettre en mode live
J'ai donc pu changer la couleur d'arrière-plan joliment en utilisant ʻUIViewControllerRepresentable` SwiftUI grandit encore, donc je pense que je dois maîtriser cet enfant.
Recommended Posts