228 votes

SwiftUI - Comment changer la couleur de fond d'une vue ?

Je commence à essayer SwiftUI et je suis surpris que cela ne semble pas être simple de changer la couleur d'arrière-plan d'une View. Comment faites-vous cela en utilisant SwiftUI?

9voto

guoliang li Points 31
struct Soview: View {
    var body: some View {
        VStack{
            Text(/*@START_MENU_TOKEN@*/"Bonjour le monde !"/*@END_MENU_TOKEN@*/)
                .frame(maxWidth:.infinity,maxHeight: .infinity)
        }.background(Color.yellow).ignoresSafeArea(.all)
    }
}

6voto

Plusieurs possibilités : (SwiftUI / Xcode 11)

1 .background(Color.black) //pour les couleurs du système

2 .background(Color("green")) //pour les couleurs que vous avez créées dans Assets.xcassets

  1. Autrement, vous pouvez faire Commande+Clic sur l'élément et le changer à partir de là.

J'espère que cela vous aidera :)

5voto

MannaICT13 Points 49

Vous pouvez simplement changer la couleur d'arrière-plan d'une vue :

var body : some View{

    VStack{

        Color.blue.edgesIgnoringSafeArea(.all)

    }

}

Et vous pouvez également utiliser ZStack :

var body : some View{

    ZStack{

        Color.blue.edgesIgnoringSafeArea(.all)

    }

}

4voto

saxjax Points 41

Est-ce que cette solution fonctionnerait ?:

ajoutez la ligne suivante à SceneDelegate : window.rootViewController?.view.backgroundColor = .black

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        if let windowScene = scene as? UIWindowScene {

                window.rootViewController?.view.backgroundColor = .black
}

4voto

jnblanchard Points 366

J'aime déclarer un modificateur pour changer la couleur de fond d'une vue.

extension View {
  func background(with color: Color) -> some View {
    background(GeometryReader { geometry in
      Rectangle().path(in: geometry.frame(in: .local)).foregroundColor(color)
    })
  }
}

Ensuite, j'utilise le modificateur en passant une couleur à une vue.

struct Content: View {

  var body: some View {
    Text("Étiquette en premier plan").foregroundColor(.green).background(with: .black)
  }

}

entrez la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X