我对swift有些陌生,正在努力解决这个看似简单的问题。我希望在我的网格中有三列,除非网格项的内容不适合设置的列宽度。具体来说,我有过滤器按钮,其中一些有很长的名称。我想将“Breakfast”的TagView发送到下一行,并移动每一行沿着以便它们都适合,并且文本不必换行。不知道该怎么做。
我尝试调整网格项中的最小值和最大值,并调整列中GridItem的数量。然而,不幸的是,这并没有奏效。任何建议将不胜感激。
下面是我的代码:
var filterBar: some View {
VStack {
filterBarTitle
if filtersOpened {
let columns = [GridItem(.adaptive(minimum: 85), spacing:0)]
LazyVGrid(columns: columns) {
ForEach(allRecipeTags) { recipeTag in
TagView(tag: recipeTag, selected: selectedTags.contains(recipeTag), canToggle: true, onTap: {
if selectedTags.contains(recipeTag) {
print("removing \(recipeTag)")
selectedTags.removeAll(where: { $0 == recipeTag })
} else {
print("adding \(recipeTag)")
selectedTags.append(recipeTag)
}
})
.border(.red)
}
}
.border(.blue)
}
}
.padding([.top, .bottom])
.border(width: 1, edges: [.bottom], color: Color("24292F").opacity(0.3))
.padding(.horizontal)
.padding([.bottom], filtersOpened ? 8 : 0)
}
1条答案
按热度按时间ccrfmcuu1#
下面是一个自定义
Layout
的简单实现,希望它能满足您的需求: