Моя реализация не идеальна, но это то, чем я доволен на данный момент. Я смотрел, создав ViewModifier, CardViewModifier (), который я использую для создания встроенного представления карты. Я использую его в нескольких местах в моем приложении, а не только со списками.
struct CardViewModifier: ViewModifier {
var backgroundColor = Color(.systemBackground)
func body(content: Content) -> some View {
content
.padding()
.frame(maxWidth: .infinity)
.background(Color(.systemBackground))
.cornerRadius(12)
.padding()
}
}
Чтобы «подделать» insetGrouped List, я конвертирую List в ScrollView, а Sections в VStacks, вот так.
struct ContentView: View {
let data = ["Row 1", "Row 2", "Row 3", "Row 4", "Row 5"]
var body: some View {
ScrollView {
VStack {
ForEach(data, id:\.self) { row in
VStack {
Text("Section 1, \(row)")
Divider()
}
}
}
.modifier(CardViewModifier())
VStack {
ForEach(data, id:\.self) { row in
Text("Section 2, \(row)").padding()
}
}
.modifier(CardViewModifier())
}
.background(Color(.secondarySystemBackground))
}
}
Как я уже сказал, это не идеал, но он будет работать, пока Apple (или кто-то еще) не создаст InsetGroupedListStyle. Когда это происходит, это должен быть простой случай, когда ScrollView возвращается к списку, а VS возвращается к разделам.
Удачи ...