SwiftUI List的行高默认为44个点,而且每行默认有上、下、左、右的空白填充
如下图:
那如果我们想减小行高该怎么办?有四步
第一步,设置系统环境变量defaultMinListRowHeight为你需要的行高值
第二步,第一行的内容要去掉上、下、左、右空白块,调用.listRowInsets(EdgeInsets())
第三步:设置行的内容的frame的height为你想要的高度
第四步,如果第三步之后,高度没减小,就要减小行的文字字体大小
代码如下:
struct ListView: View {
var body: some View {
List{
Section(header:Color.clear.frame(height: 0).listRowInsets(.init()),
footer: Color.clear.frame(height: 0).listRowInsets(.init())) {
Text("第一组第一行")
.font(Font.system(size: 5))//第四点
.frame(height: 5)//第三点
.listRowInsets(EdgeInsets())//第二点
Text("第一组第二行").listRowInsets(EdgeInsets())
}
Section(header: Text("第二组")) {
Text("第二组第一行")
Text("第二组第二行")
}
}.listStyle(.grouped)
.environment(\.defaultMinListRowHeight,5)//第一点
.environment(\.defaultMinListHeaderHeight, 0.1)
.navigationBarTitle("List", displayMode: NavigationBarItem.TitleDisplayMode.inline)
}
}
效果如下:
这样,第一组第一行的行高就变成5了