J'essaie de supprimer les séparateurs de "lignes" d'un List
dans SwiftUI.
J'ai parcouru la documentation List
, mais je n'ai pas pu trouver de modificateur pour cela.
Toute aide serait appréciée.
Vous pouvez utiliser ForEach
dans un ScrollView
au lieu de List
pour des vues dynamiques sans aucun style
Il y a un UITableView
derrière le List
de SwiftUI pour iOS. Donc, pour supprimer
vous avez besoin d'un tableFooterView
et pour supprimer
vous avez besoin de separatorStyle
pour être .none
init() {
// To remove only extra separators below the list:
UITableView.appearance().tableFooterView = UIView()
// To remove all separators including the actual ones:
UITableView.appearance().separatorStyle = .none
}
var body: some View {
List {
Text("Item 1")
Text("Item 2")
Text("Item 3")
}
}
alors que cette solution fonctionne correctement, nettoyons le travail en utilisant ViewModifier
public struct ListSeparatorStyleNoneModifier: ViewModifier {
public func body(content: Content) -> some View {
content.onAppear {
UITableView.appearance().separatorStyle = .none
}.onDisappear {
UITableView.appearance().separatorStyle = .singleLine
}
}
}
faisons maintenant une petite extension qui aiderait à cacher les détails
extension View {
public func listSeparatorStyleNone() -> some View {
modifier(ListSeparatorStyleNoneModifier())
}
}
Comme vous pouvez le voir, nous avons encapsulé notre code de configuration d'apparence dans un petit modificateur de vue soigné. vous pouvez le déclarer directement maintenant
List {
Text("1")
Text("2")
Text("3")
}.listSeparatorStyleNone()
La solution de contournement actuelle consiste à les supprimer via UIAppearance
:
UITableView.appearance(whenContainedInInstancesOf:
[UIHostingController<ContentView>.self]
).separatorStyle = .none
Ajout de UITableView.appearance().separatorColor = .clear
pour l'initialiseur
struct SomeView: View {
init() {
UITableView.appearance().separatorColor = .clear
}
}
J'espère que vous résolvez ce problème.