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
相关产品推荐
相关产品推荐

