Je veux changer cette couleur d'arrière-plan "gris clair" pour un formulaire, mais .foregroundColor(Color.blue)
et .background(Color.blue)
ne semble pas fonctionner
struct ContentView : View {
@State var value = ""
var body: some View {
Form {
Section(header: Text("First Name")) {
TextField($value)
}
Section(header: Text("Last Name")) {
TextField($value)
}
}.foregroundColor(Color.blue)
}
}
Tous les List
de SwiftUI sont soutenus par un UITableView
dans iOS. vous devez donc changer la couleur d'arrière-plan de the tableView. Mais puisque les valeurs Color
et UIColor
sont légèrement différentes, vous pouvez vous débarrasser des UIColor
.
struct ContentView: View {
init(){
UITableView.appearance().backgroundColor = .clear
}
@State var value = ""
var body: some View {
Form {
Section(header: Text("First Name")) {
TextField("First Name", text: $value)
}
Section(header: Text("Last Name")) {
TextField("Last Name", text: $value)
}
}
.foregroundColor(Color.blue)
.background(Color.yellow)
}
}
Vous pouvez maintenant utiliser Tout arrière-plan (y compris tous les Color
s) que vous souhaitez
Notez que ces zones blanches en haut et en bas sont en toute sécurité et vous pouvez utiliser le modificateur .edgesIgnoringSafeArea()
pour se débarrasser d'eux.
La réponse acceptée par Mojtaba Hosseini, ci-dessus, fonctionne mais l'instruction init () n'est pas un bon endroit pour l'instruction UITableView
. En effet, il "code en dur" les paramètres d'initialisation de ContentView. Dans ce cas, il n'en a aucun, donc tout fonctionne mais si un @ObservedObject
A été ajouté à la vue, cela interromprait la fonction init.
Beaucoup plus simple, juste pour ajouter l'instruction UITable au body
, renvoyer explicitement le Form
et supprimer le init()
.
var body: some View {
UITableView.appearance().backgroundColor = .clear
return Form {...}
}
Cependant, la définition de la couleur d'arrière-plan sur Form
fonctionne généralement comme prévu. Le fait qu'il ne fonctionne pas sur l'écran ContentView
peut être un bug.
essaye ça
.onAppear {
UITableView.appearance().backgroundColor = .blue
}