我正在尝试构建的是非常简单和通用的组件。这是设计:
这是我到目前为止尝试过的代码:
struct ContentView: View {
var tags: [String]
var body: some View {
LazyVGrid(columns: [GridItem(.flexible(minimum: 0, maximum: .infinity)),
GridItem(.flexible(minimum: 0, maximum: .infinity))]) {
ForEach(tags, id: \.self) { tag in
Button(action: { print(tag) }) {
Text(tag.title)
.lineLimit(1)
.padding(.vertical, 8)
.padding(.horizontal)
.overlay(
RoundedRectangle(cornerRadius: 4)
.stroke(Color.primaryViolet, lineWidth: 2)
)
}
}
}
}
}
这是我得到的:
以下是一些额外的细节:
- 数量
tags
可能从0..<infinity
. tag
除非单个超出网格的整个宽度,否则不应被截断。- 每行的数量
tags
可以根据 的宽度而变化tags
。 - 标签必须是
left-aligned
.
注意:如果可能的话,我更喜欢本机SwiftUI
方法,而不导入任何 3rd 方库。