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

SwiftUI中HStack内VStack的蓝色背景无法填满剩余空间如何解决

问题原因

SwiftUI 的修饰符是按照书写顺序依次生效的,你当前的代码先给 VStack 的内容区域添加了蓝色背景,之后再设置maxWidth: .infinity撑开宽度,撑开的区域并没有被背景色覆盖,所以达不到预期效果。

解决方法

调换每个 VStack 上两个修饰符的顺序,先设置frame撑开宽度,再添加背景色即可。同时HStack中的额外Spacer可以删除,三个设置了最大宽度为无穷大的子视图会自动平分HStack的可用宽度,你可以通过HStack的spacing参数自定义三个模块的间距。

修正后的代码如下:

HStack(spacing: 16) { // 可自行调整spacing数值修改模块间距
    VStack {
        Text("Total Yield").padding([.trailing, .leading, .top])
        Text("3.0 oz").padding([.trailing, .leading, .bottom])
    }
    .frame(maxWidth: .infinity)
    .background(Color.blue)

    VStack {
        Text("Ice").padding([.trailing, .leading, .top])
        Text("None").padding([.trailing, .leading, .bottom])
    }
    .frame(maxWidth: .infinity)
    .background(Color.blue)

    VStack {
        Text("Glass").padding([.trailing, .leading, .top])
        Text("Coupe").padding([.trailing, .leading, .bottom])
    }
    .frame(maxWidth: .infinity)
    .background(Color.blue)
}
.padding()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:12:02