我当前使用的是List
和GroupedListStyle()
以及.regular horizontalSizeClass
(例如,横向模式的iPad),这种样式的List会自动为每个部分创建填充,就像这样:
struct ListView: View {
var body: some View {
List {
Section {
Text("One")
Text("Two")
Text("Three")
}
}.listStyle(GroupedListStyle())
}
}
太好了,我想要这个。但是由于我需要以固定的宽度显示行中的某些元素,因此必须知道列表中行的实际宽度。
我尝试用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())
}
}
}
因此,我尝试通过在行的GeometryReader
修饰符中放置listRowBackground
来使用PreferenceKey方法explained here,但该值从未更新
是否有一种获取父级大小的有效方法,而无需在父级周围使用GeometryReader
(因为它在List上很细,需要指定Height和Width才能正常工作)? / p>
答案 0 :(得分:0)
我不得不求助于UITableView
风格的.insetGrouped
,并用Representable
来实现,并使用属性layoutMargins
来提供水平边距的大小在这个尺寸的班上。