J'utilise un ListView sous Mac OS. J'essaye de changer cette couleur d'arrière-plan de ce ListView. Cependant, ce n'est pas aussi simple que prévu.
J'ai essayé d'utiliser l'attribut .background(Color(.red))
sur le ListView. Cela n'a rien changé.
Je n'ai pu trouver que .listRowBackground(Color(.red))
qui avait une influence sur les lignes du tableau. Cependant, l'autre arrière-plan n'a pas été affecté.
J'ai préparé une petite démo pour démontrer:
Dans mon corps de vue:
VStack
{
List()
{
Text("Test")
.listRowBackground(Color.green)
Text("Test")
.listRowBackground(Color.green)
Text("Test")
.listRowBackground(Color.green)
}.background(Color(.red))
}.background(Color(.red))
C'est le résultat que j'obtiens:
Le contexte principal ne change pas. J'ai lu une solution modifiant le UITableView.appearance
mais ce n'est pas possible pour moi dans SwiftUI pour Mac OS.
Merci d'avance
Malheureusement, le protocole ListStyle
n'est pas documenté et .listStyle
le modificateur a une utilisation très limitée, vous pouvez choisir parmi CarouselListStyle, DefaultListStyle, GroupedListStyle ,PlainListStyle, SidebarListStyle
Essayez d'imiter List avec ScrollView combiné avec ForEach, ce qui vous donne beaucoup de flexibilité, les parties manquantes sont faciles à écrire. Une fois que le ListStyle sera disponible pour les développeurs, il sera facile de changer le code ...
struct ContentView: View {
var body: some View {
HStack(spacing: 0) {
ScrollView {
ForEach(0 ..< 4) { idx in
VStack(alignment: .leading) {
Divider().background(Color.blue)
Text("Test \(idx)")
.padding(.horizontal, 10)
.background(Color.pink)
//Divider()
}.padding(.bottom, -6)
}
}
.frame(maxWidth: 100)
.background(Color.gray)
Color.green
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}