目前,我正在研究 SwiftUI 并制作在注冊主題標簽時顯示在視圖中的 UI。但是我不知道如何處理創建和插入新 HStack 的邏輯,當它超出 VStack 內的螢屏大小時。我已經搜索了好幾次,但我找不到任何有用的詞或關鍵字。
如果您能通過知道答案來幫助我,我將不勝感激。

上圖是一個例子。我想創建一個新的 HStack 并在寬度超過設備的水平尺寸時將其放入 VStack 中,同時將文本項插入 HStack。
struct HashTagView: View {
var hashTagArray: [String] = ["#Lorem", "#Ipsum", "#dolor", "#sit", "#amet", "#consectetur", "#adipiscing", "#elit", "#Nam", "#semper", "#sit", "#amet", "#ut", "#eleifend", "#Cras"]
var body: some View {
VStack(spacing: 5) {
ForEach(hashTagArray, id:\.self) { tag in
Text(tag)
}
}
.padding()
.border(Color.blue)
.frame(width: UIScreen.main.bounds.size.width)
}
}
這是我的代碼。
uj5u.com熱心網友回復:
您應該在此處使用具有自適應布局的 LazyVgrid:
我從您的陣列中洗掉了一些條目,因為如果您使用它,id: \.self您應該確保每個條目都是唯一的。
檔案
struct HashTagView: View {
var hashTagArray: [String] = ["#Lorem", "#Ipsum", "#dolor", "#consectetur", "#adipiscing", "#elit", "#Nam", "#semper", "#sit", "#amet", "#ut", "#eleifend", "#Cras"]
private var gridItemLayout = [GridItem(.adaptive(minimum: 100))]
var body: some View {
ScrollView{
LazyVGrid(columns: gridItemLayout , spacing: 5) {
ForEach(hashTagArray, id:\.self) { tag in
Text(tag)
}
}
.padding()
.border(Color.blue)
}
.frame(width: UIScreen.main.bounds.size.width)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464491.html
