【发布时间】:2019-12-01 20:56:52
【问题描述】:
我正在尝试在 SwiftUI 中实现一个标签列表,但如果列表水平溢出,我不确定如何让它将标签包装到其他行。我从一个名为 tags 的字符串数组开始,在 SwiftUI 中循环遍历数组并创建按钮,如下所示:
HStack{
ForEach(tags, id: \.self){tag in
Button(action: {}) {
HStack {
Text(tag)
Image(systemName: "xmark.circle")
}
}
.padding()
.foregroundColor(.white)
.background(Color.orange)
.cornerRadius(.infinity)
.lineLimit(1)
}
}
但是,如果数组有更多的值,它会这样做:
我正在寻找的行为是让最后一个标签(黄色)换行到第二行。我意识到它在 HStack 中,我希望我可以添加对 lineLimit 的调用,其值大于一,但它似乎并没有改变行为。如果我将外部 HStack 更改为 VStack,它将每个 Button 放在单独的行上,所以仍然不是我尝试创建的行为。任何指导将不胜感激。
【问题讨论】:
-
恐怕
HStack不足以做到这一点。可能应该对GeometryReader做点什么,但这并不容易!我会尽力帮助你。我假设标签的顺序/排序无关紧要(所以这只是它们所在数组的顺序)? -
你说得对,顺序不重要,按照数组的顺序就行了
-
这能回答你的问题吗? SwiftUI HStack with wrap and dynamic height
标签: swiftui