【发布时间】:2022-04-11 01:54:02
【问题描述】:
我想创建一个没有空格或更小的单元格网格,就像照片应用程序一样,SwiftUI 2 LazyVGrid 可以吗?我试过了,但列之间总是有这个空间。
在文档中,spacing 参数描述为:
间距 网格与其父视图中的下一项之间的间距。
这没有多大意义,你不能直接使用padding 吗?此外,当我尝试增加间距时,它似乎实际上影响了单元格行之间的空间,这更加出乎意料。
【问题讨论】:
我想创建一个没有空格或更小的单元格网格,就像照片应用程序一样,SwiftUI 2 LazyVGrid 可以吗?我试过了,但列之间总是有这个空间。
在文档中,spacing 参数描述为:
间距 网格与其父视图中的下一项之间的间距。
这没有多大意义,你不能直接使用padding 吗?此外,当我尝试增加间距时,它似乎实际上影响了单元格行之间的空间,这更加出乎意料。
【问题讨论】:
在LazyVGrid 中指定spacing: 0 用于垂直间距,在GridItem 中指定spacing: 0 用于水平间距。
这是一个演示。使用 Xcode 12 / iOS 14 测试
struct TestImagesInGrid: View {
@State private var imageNames: [String]
private let threeColumnGrid = [
GridItem(.flexible(minimum: 40), spacing: 0),
GridItem(.flexible(minimum: 40), spacing: 0),
GridItem(.flexible(minimum: 40), spacing: 0),
]
init() {
_imageNames = State(initialValue: (0..<8).map { _ in
"image_\(Int.random(in: 1...3))"
})
}
var body: some View {
LazyVGrid(columns: threeColumnGrid, alignment: .leading, spacing: 0) {
ForEach(imageNames.indices) { i in
Image(imageNames[i]).resizable()
.aspectRatio(1, contentMode: .fill)
.border(Color.black)
}
}
}
}
【讨论】: