ios SwiftUI .gridCellColums()导致网格缩小

qlckcl4x  于 2023-10-21  发布在  iOS
关注(0)|答案(1)|浏览(97)

我正在使用.gridCellColumns()修饰符来合并多个视图中的一个视图,但是当我这样做时,由于某种原因,整个网格缩小了。有人能推荐一个解决方案或调试方法吗?我已经尽可能地简化了下面的内容。
顶部的蓝色网格显示一切正常。下面的红色网格显示了“1 2 3”视图合并为一个“4”视图,.gridCellColumns(3),网格由于某种原因缩小。

var body: some View {
        VStack(alignment: .leading, content: {
            
            
            HStack {
                Text("Grid Layout Issue")
                    .bold()
                Spacer()

            }
                .font(.title)
                .padding(.bottom, 12)

            Grid {
                GridRow {
                    HStack {
                        Text("Title A goes here")
                            .lineLimit(1)
                        Spacer()
                    }
                    Text("1")
                    Text("2")
                    Text("3")
                }

                GridRow {
                    HStack {
                        Text("Title B goes here")
                            .lineLimit(1)
                        Spacer()
                    }
                    Text("1")
                    Text("2")
                    Text("3")
                }

            }
            .border(Color.blue)
            
            Grid {
                GridRow {
                    HStack {
                        Text("Title A goes here")
                            .lineLimit(1)
                        Spacer()
                    }
                    Text("1")
                    Text("2")
                    Text("3")
                }

                GridRow {
                    HStack {
                        Text("Title B goes here")
                            .lineLimit(1)
                        Spacer()
                    }
                    Text("4")
                        .gridCellColumns(3)       // CHANGE IS HERE <-----
                }

            }
            .border(Color.red)

            Spacer()

        })
        .padding()
    }

With Spacer().frame(height: 0)

z2acfund

z2acfund1#

我可以使用.layoutPriority()修改器来让一切都很好地发挥作用:

Grid {
    GridRow {
        Text("Title A goes here (long text)")
            .lineLimit(1)
            .layoutPriority(1)
        Spacer()
            .frame(height: 4)
        Text("1").layoutPriority(2)
        Text("2").layoutPriority(2)
        Text("3").layoutPriority(2)
    }
    
    GridRow {
        Text("Title A goes here (long text)")
            .lineLimit(1)
            .layoutPriority(1)
        Spacer()
            .frame(height: 4)
        Text("4")
            .gridCellColumns(3)
            .layoutPriority(2)
    }

}

相关问题