Comment changer la couleur d'arrière-plan de la barre de navigation, etc. dans Swift UI

Chose que tu veux faire

Changer la couleur d'arrière-plan de la barre de navigation dans Swift UI Je ne veux pas utiliser ʻUI Appearance` (forte volonté)

Conclusion

--Changed BackgroundColor de NavigationBar sans utiliser ʻUINavigationBar.appearance () --Créez une vue dont vous souhaitez modifier le style de NavigationBar avec UIViewControllerRepresentable`

Préparation

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)
        }
    }

}

Exemple d'utilisation réelle

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]
            })
        }
    }
}

Aperçu

ss20201011

environnement

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

Je souhaite modifier la couleur d'arrière-plan de la barre de navigation

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 ...)

Merci Stack Overflow!

SwiftUI update navigation bar title color Quelqu'un m'a appris à le changer en un joli: sourire:

Inconvénients de cette méthode

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

Comment changer la couleur d'arrière-plan de la barre de navigation, etc. dans Swift UI
[Swift] Comment modifier dynamiquement la hauteur de la barre d'outils sur le clavier
[swift5] Comment spécifier la couleur en hexadécimal
Comment changer le nom de l'application dans les rails
Comment écraser les données Firebase avec Swift
Comment modifier le nombre maximum et maximum de données POST dans Spark
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
[swift5] Comment changer la couleur de TabBar ou la couleur de l'élément de TabBar avec le code
Résumé de la sélection des éléments dans Selenium
Comment utiliser JQuery dans Rails 6 js.erb
Comment exécuter des tâches en parallèle avec Swift dans Swift Package
[Swift] Comment obtenir le nombre d'éléments dans un tableau (super basique)
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
Comment réparer un crash lors de la suppression de données de royaume dans la liste de l'interface utilisateur Swift
Comment implémenter UICollectionView avec du code uniquement dans Swift
[Swift] Enregistrer la couleur aux valeurs par défaut de l'utilisateur avec l'interface utilisateur Swift (Remarque)
[Rails] Comment changer le nom de colonne de la table
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Résumé de la mise en œuvre des arguments par défaut en Java
[Swift] Comment obtenir l'ID de document Firebase
Comment lancer Swagger UI et Swagger Editor dans Docker
Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot
Mémo: [Java] Comment vérifier groupId etc. décrit dans pom.xml
Photothèque avec Swift UI
Comment modifier la valeur de réglage de Springboot Hikari CP
Comment implémenter l'affichage sur une seule ligne de TextView dans le développement Android
Comment dériver le dernier jour du mois en Java
[Sprint Boot] Comment utiliser les trois types de SqlParameterSource définis dans org.springframework.jdbc.core.namedparam
[Swift5] Comment obtenir un tableau et un ensemble de différences entre les tableaux
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Comment supprimer de grandes quantités de données dans Rails et problèmes
Comment afficher une liste de chaînes dans JSF sous forme de chaînes séparées par des virgules
[chown] Comment changer le propriétaire d'un fichier ou d'un répertoire
Je veux changer la valeur de l'attribut dans Selenium of Ruby
Comment obtenir la longueur d'un fichier audio avec Java
Comment incrémenter la valeur de Map sur une ligne en Java
Comment utiliser Lombok au printemps
Comment trouver May'n dans XPath
Comment masquer la barre de défilement dans WebView
Comment exécuter JUnit dans Eclipse
Comment itérer indéfiniment en Ruby
Comment exécuter Ant dans Gradle
Comment maîtriser la programmation en 3 mois
Comment apprendre JAVA en 7 jours
Comment obtenir des paramètres dans Spark
Comment changer kube-proxy en mode ipvs.