Layout SwiftUI:如何使GridItem向外推以填充可用空间
我想创建一个4行24项的网格,因此每行应该有6项。所有项目的大小应相同,但无论网格在哪个设备上渲染,都应填充整个可用空间 我已经为行实现了一个灵活的高度,但是GridItems并没有在水平方向上推进put,尽管它是一个形状,也就是说是向外推进的。好吧,在懒散的生活中,它似乎并没有被挤出去 这是我的代码:Layout SwiftUI:如何使GridItem向外推以填充可用空间,layout,swiftui,grid,lazyhgrid,Layout,Swiftui,Grid,Lazyhgrid,我想创建一个4行24项的网格,因此每行应该有6项。所有项目的大小应相同,但无论网格在哪个设备上渲染,都应填充整个可用空间 我已经为行实现了一个灵活的高度,但是GridItems并没有在水平方向上推进put,尽管它是一个形状,也就是说是向外推进的。好吧,在懒散的生活中,它似乎并没有被挤出去 这是我的代码: struct AllAchievementsView: View { var gridRows: Array<GridItem> { [GridItem(), G
struct AllAchievementsView: View {
var gridRows: Array<GridItem> { [GridItem(), GridItem(), GridItem(), GridItem()] }
var body: some View {
ZStack {
Color.black
LazyHGrid(rows: gridRows) {
ForEach(0..<24) { index in
RoundedRectangle(cornerRadius: 10).foregroundColor(.blue)
}
}.padding()
}
}
}
struct allachievements视图:视图{
变量gridRows:数组{[GridItem(),GridItem(),GridItem(),GridItem()]}
var body:一些观点{
ZStack{
颜色:黑色
懒鬼(行:网格行){
ForEach(0..GridItem
是根据内容大小填充/对齐的,但是矩形没有自己的大小,因此您可以看到使用了一些最小默认值
下面是一个可能的解决方案(使用Xcode 12/iOS 14测试)
struct allachievements视图:视图{
设sp=CGFloat(5)
var gridRows:Array{Array(重复:GridItem(间距:sp),计数:4)}
var body:一些观点{
GeometryReader{gp in
ZStack{
颜色:黑色
LazyHGrid(行:网格行,间距:sp){
ForEach(0..您是否只是缺少了aspectRatio(1,contentMode:.fit)
修饰符?就我个人而言,我不喜欢依赖GeometryReader
的解决方案。根据您的要求,您可以简单地将圆角的纵横比设置为16/10或1/1,以确保其具有合理的宽度。
struct AllAchievementsView: View {
let sp = CGFloat(5)
var gridRows: Array<GridItem> { Array(repeating: GridItem(spacing: sp), count: 4) }
var body: some View {
GeometryReader { gp in
ZStack {
Color.black
LazyHGrid(rows: gridRows, spacing: sp) {
ForEach(0..<24) { index in
RoundedRectangle(cornerRadius: 10).foregroundColor(.blue)
.frame(width: gp.size.width / 6 - 2*sp)
}
}
.padding()
}
}
}
}