SwiftUI:如何让HStack中双Text左右分布且与水平中心等距
解决方案
要实现Text("Hello")居左、Text("World")居右且两者到页面水平中心距离完全相等的布局,你可以通过将水平空间均分为左右两部分,分别在两个分区内对齐文本的方式来实现:
HStack(spacing: 0) { // 左半区:文本左对齐 Text("Hello") .frame(maxWidth: .infinity, alignment: .leading) // 右半区:文本右对齐 Text("World") .frame(maxWidth: .infinity, alignment: .trailing) } .frame(maxWidth: .infinity)
原理说明
- 外层
HStack(spacing: 0)取消内部元素间距,同时给每个Text设置maxWidth: .infinity的frame,让两个文本容器均分整个水平空间。 - 左侧文本在自身半区内向左对齐,右侧文本在自身半区内向右对齐,确保两者到页面水平中心的距离完全一致,不受文本自身长度影响。
如果需要让文本和页面边缘保留间距,给外层HStack添加水平padding即可:
HStack(spacing: 0) { Text("Hello") .frame(maxWidth: .infinity, alignment: .leading) Text("World") .frame(maxWidth: .infinity, alignment: .trailing) } .frame(maxWidth: .infinity) .padding(.horizontal, 16)
内容的提问来源于stack exchange,提问作者Sutton
相关产品推荐
相关产品推荐

