我目前正在使用List
带有 aGroupedListStyle()
和 a 的 a .regular horizontalSizeClass
(例如横向模式下的 iPad),这种样式的 List 会自动为每个部分创建一些填充,如下所示:
struct ListView: View {
var body: some View {
List {
Section {
Text("One")
Text("Two")
Text("Three")
}
}.listStyle(GroupedListStyle())
}
}
这个很棒,我想要这个。但是由于我需要在行内以固定宽度显示一些元素,所以我需要知道 List 内行的实际宽度。
我尝试用 GeometryReader 包装列表,但宽度与行的宽度不匹配,因为整个Section
.
struct ListView: View {
var body: some View {
GeometryReader { geometry in
List {
Section {
Text("One") // <-- geometry.size.width != Text.width
Text("Two")
Text("Three")
}
}.listStyle(GroupedListStyle())
}
}
}
因此,我尝试使用此处解释的 PreferenceKey 方法,将 aGeometryReader
放在listRowBackground
行的修饰符中,但该值永远不会更新。
有没有一种工作方式来获取父级的大小,而不是 GeometryReader
在父级周围使用 a (因为它在列表上很复杂,需要指定高度和宽度才能正常工作)?