You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中LazyVGrid设置GridItem.fixed固定宽度不生效问题

问题原因

问题由SwiftUI修饰符的执行顺序错误导致:
原代码中修饰符顺序为padding → background → frame,背景色只会覆盖「文本内容+内边距」的区域,后续设置的maxWidth: .infinity仅会扩大视图的布局占位范围,不会让背景色同步延伸到整个区域,因此看起来按钮宽度没有跟随GridItem的固定配置统一,实际上GridItem的.fixed(100)已经生效。

解决方法

调整BB组件的修饰符顺序,先设置撑满可用宽度的frame,再添加内边距和背景即可,无需修改GridItem配置:

struct BB:View {
    var content:String
    var value:Int
    var body:some View{
        Button(action: {}) {
            Text(content)
        }
        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 50)
        .padding()
        .background(Color.gray)
        .foregroundColor(Color.white)
        .font(.system(size:40))
        .cornerRadius(5)
    }
}

修改后每个按钮的背景都会完全填充LazyVGrid分配的100pt宽度,无论文本内容长度如何,所有按钮宽度都会保持一致。


内容的提问来源于stack exchange,提问作者yleyver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:42:03