【发布时间】:2020-10-28 23:22:31
【问题描述】:
我想创建一个 4 行有 24 个项目的网格,所以每行应该有 6 个项目。所有项目都应大小相同,但要填满整个可用空间,无论网格在什么设备上呈现。
我已经为行实现了灵活的高度,但是 GridItems 不会在水平维度上推入,尽管它是一个形状,据说是推出的。在 LazyHGrid 中,它似乎不会推出。
这是我的代码:
struct AllAchievementsView: View {
var gridRows: Array<GridItem> { [GridItem(), GridItem(), GridItem(), GridItem()] }
var body: some View {
ZStack {
Color.black
LazyHGrid(rows: gridRows) {
ForEach(0..<24) { index in
RoundedRectangle(cornerRadius: 10).foregroundColor(.blue)
}
}.padding()
}
}
}
我尝试了 GridItem 大小的所有变体,我尝试在我的 Rectangle 上添加一个带有 .infity 的框架,等等,但无法实现。我真的必须使用 GeometryReader 以编程方式进行数学运算吗?
我添加了两张图片:一张显示这段代码的结果,另一张显示我想要实现的内容。
【问题讨论】:
-
你不只是缺少
aspectRatio(1, contentMode: .fit)修饰符吗?我个人不喜欢依赖GeometryReader的解决方案。根据您的要求,您可以简单地在RoundedRectangle上设置 16/10 或 1/1 的纵横比,以确保它具有合理的宽度。
标签: layout swiftui grid lazyhgrid