-1

我只是想知道如何制作一个 LazyVGrid,其中每个项目只占据它需要的位置,而不是更少也不是更多。

我知道,.flexible()但问题是:我的物品尺寸不同,这意味着我不知道有多少物品可以连续放置。

你有什么想法吗?谢谢你的帮助!布托什

编辑:

LazyVGrid(columns: [GridItem(.flexible())]) {
            Color.blue
                .frame(width: 200, height: 200)
            Color.blue
                .frame(width: 100, height: 100)
            Color.blue
                .frame(width: 100, height: 100)
        }

这是我所说的一个例子。我想实现这些项目被放置在它们周围的均匀空间。(不低于彼此,就像他们现在一样)

4

1 回答 1

1

您只需要使用变量来指定您想要的内容。尝试这个 :

struct ContentView: View {
let data = (1...100).map { "Item \($0)" }

let columns = [
   // The number of grid Items here represent the number of columns you will 
   //see. so you can specify how many  items in a row thee are .
   // 2 grid Items =  2 items in a row
    GridItem(.flexible()),
    GridItem(.flexible()),
]

var body: some View {
    ScrollView {
        LazyVGrid(columns: columns, spacing: 20) {
            ForEach(data, id: \.self) { item in
                Text(item)
            }
        }
        .padding(.horizontal)
    }
    .frame(maxHeight: 300)
}
}
于 2021-09-23T18:42:30.963 回答