SwiftUI LazyVGrid - 顶部对齐

Dav*_*eB1 12 alignment swiftui lazyvgrid

我有很多卡片需要在 vGrid 中显示。但是,卡片具有动态高度,我想要做的是将列中的卡片与顶部对齐。

这是当前的设置:

let resultGridLayout = [GridItem(.adaptive(minimum: 160), spacing: 10)]

func itemsView() -> some View {
        VStack {
            filterButton()
                .padding(.bottom)
            LazyVGrid(columns: resultGridLayout, spacing: Constants.ItemsGrid.spacing) {
                ForEach(MockData.resultsData, id: \.id) { result in
                    ProductCardView(viewModel: .init(container: viewModel.container, menuItem: result))
                }
            }
            .padding(.horizontal, Constants.ItemsGrid.padding)
        }
    }
Run Code Online (Sandbox Code Playgroud)

目前的布局如下:

在此输入图像描述

因此,每个项目都位于其列空间的中心,而我想要发生的是让它们在每行的顶部对齐。

显然,alignmentvGrid 的修饰符允许我们水平对齐(.center、.leading、.trailing 等),但是我怎样才能阻止它们在中心垂直对齐呢?

Asp*_*eri 29

我假设您想对齐网格项本身,例如

let resultGridLayout = [GridItem(.adaptive(minimum: 160), spacing: 10, 
                          alignment: .top)]    // << here !!
Run Code Online (Sandbox Code Playgroud)

演示

使用 Xcode 13.3 / iOS 15.4 进行测试(在某些复制中)