如何在 SwiftUI 中使用自定义布局(不同的单元格大小)获取网格

Osa*_*eem 5 ios swift swiftui lazyvgrid

所以我试图获得一个具有不同大小的单元格的自定义网格。我有点被困在这里了。所以我有一个特定的单元格,其高度和大小是所有其他单元格的两倍。但单元格的左侧需要两行而不是一行。如何强制在下图中的 H3 下方或 H4 框左侧添加两个框。

这是我的代码:

struct CustomGridView: View {
var body: some View {
    let gridItems = [GridItem(.fixed(150), spacing: 10, alignment: .leading),
                     GridItem(.fixed(150), spacing: 10, alignment: .leading),
                     GridItem(.fixed(150), spacing: 10, alignment: .leading)]

    LazyVGrid(columns: gridItems, spacing: 10) {
        ForEach(0..<9) { g in
            
            Text("H:\(g)")
                .frame(width: g == 4 ? 310 : 150, height: g == 4 ? 310 : 150)
                .background(Color.red)
            
            if g == 4 { Color.clear }
            
        }
    }
    .frame(width: 470)
}
}
Run Code Online (Sandbox Code Playgroud)

这是迄今为止网格情况的屏幕截图:

在此输入图像描述

对此的任何帮助将不胜感激。

小智 -1

我认为仅使用惰性 vgrid ForEach 时您无法做到这一点...如果您检查连续的最高单元格高度,然后以某种方式用另外两个框填充它,也许您可​​以做类似的事情。您需要为此编写一个自定义函数。另外哪个块将进入 H:3 上方/下方的空白区域?您需要为此编写一些自定义逻辑。