SwiftUI Spacer不生效 无法将元素推至行最右侧问题求助
问题原因
HStack默认采用内容自适应宽度规则,你没有给外层HStack设置占满父容器横向宽度的约束,所以Spacer只会在Text和Circle之间撑开最小可用空间,不会撑满整行,自然没法把Circle推到行最右侧,你看到的红色Spacer宽度很窄就是这个原因。
解决方案
给外层的 HStack 添加 .frame(maxWidth: .infinity) 修饰符,强制让 HStack 占满父容器的全部横向宽度,这样 Spacer 就会自动撑开所有剩余空间,把条件渲染的 Circle 推到整行最右侧。
修改后的代码如下:
HStack { Text(self.category.name.capitalizingFirstLetter()) .font(.body) .fontWeight(.light) Spacer() .background(Color.red) if category.id == selectedCategoryID { Circle() .foregroundColor(.pink) .background(Color.yellow) } } // 新增这行修饰符即可 .frame(maxWidth: .infinity)
如果需要匹配系统列表单元格的默认边距规范,可以在 frame 修饰符后额外添加 .padding(.horizontal) 调整水平内边距。
内容的提问来源于stack exchange,提问作者Nimrod Shai
相关产品推荐
相关产品推荐

