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

SwiftUI中如何避免Divider过度拓宽父视图?

解决SwiftUI Divider拓宽父视图的问题

SwiftUI里的Divider默认会自动撑满可用的最大宽度,相当于隐式加了frame(maxWidth: .infinity),这就导致你的橙色VStack被拉到和右侧蓝色文本一样宽,不符合预期。

你可以用以下方法修复:

  • 给Divider添加fixedSize()修饰符:这个修饰符会让Divider仅适配自身内容所需的宽度,也就是和上下的文本宽度保持一致,不会强行拓宽父视图。修改后的代码如下:
HStack {
    VStack {
        Text("AAA")
        Divider()
            .fixedSize()
        Text("BBB")
    }
    .background(Color.orange)

    Text("BodyBodyBodyBodyBodyBodyBodyBodyBodyBody")
    .frame(maxWidth: .infinity)
    .background(Color.blue)
}

修改后,橙色区域只会包裹文本和Divider,蓝色区域会自动占据HStack的剩余宽度,和预期效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:57:38