我在ScrollView
中使用LazyVGrid
来显示1列(纵向)或2列(横向)布局中的单元格。然而,一行中较短单元格的高度无法扩展到与同一行中较高单元格的高度相匹配,看起来相当糟糕。
我如何确保一行中每个单元格的高度始终相同?显然我不希望每个单元格的高度都是固定的。(需要说明的是,我希望“Church - Eastbound”与“Church & Market”一样高,“West Portal”与“Forest Hill”一样高。
ScrollView(.vertical) {
LazyVGrid(
columns: [GridItem(.adaptive(minimum: 400))],
alignment: .leading,
spacing: 16
) {
ForEach(sharedFavorites.favoriteStops.indices, id: \.self) { index in
let favorite = sharedFavorites.favoriteStops[index]
NavigationLink(
destination: SingleStationView(
station: favorite.station,
direction: favorite.direction
)
) {
BoardRow(favorite: favorite, stop: favorite.observableStop)
.padding()
.background(Color(.secondarySystemGroupedBackground))
.cornerRadius(10)
.frame(maxHeight: .infinity)
}
}
}
}
截图:
我在BoardRow
视图和BoardView
的内部内容(这只是一个普通的VStack
)上都尝试了.frame(maxHeight: .infinity)
。它不起作用。
1条答案
按热度按时间l2osamch1#
你真的很接近-只需要把
.frame(maxHeight:)
放在.background
之前。结果: