用于将 HStack 元素包装成多行的 SwiftUI 视图。
WrappingHStack
- 提供支持自动换行的 HStack
使用 Swift Package Manager 将依赖项添加到您的项目中: https://github.com/diniska/swiftui-wrapping-stack
导入依赖项
import WrappingStack
在您的视图结构中将 HStack
替换为 WrappingHStack
。它与 ForEach
兼容。
struct MyView: View {
let elements = ["Cat 🐱", "Dog 🐶", "Sun 🌞", "Moon 🌕", "Tree 🌳"]
var body: some View {
WrappingHStack(id: \.self) { // use the same id is in the `ForEach` below
ForEach(elements, id: \.self) { element in
Text(element)
.padding()
.background(Color.gray)
.cornerRadius(6)
}
}
.frame(width: 300) // limiting the width for demo purpose. This line is not needed in real code
}
}
以上代码的结果
使用以下参数自定义外观。所有默认的 SwiftUI 修饰符也可以应用。
参数名 | 描述 |
---|---|
alignment |
水平和垂直对齐。默认使用 .center 。垂直对齐应用于每一行 |
horizontalSpacing |
元素之间的水平间距 |
verticalSpacing |
行之间的垂直间距 |
代码编写方式旨在缓存表示视图大小的元素,它不会为具有相同 id 的不同视图重新计算大小。
HStack
,对于长行,LazyHStack
是更好的选择。如果您有大量元素,请在真实设备上仔细检查内存和性能