如何使 Grid 项目宽度动态化,以便它采用文本的宽度?
使用下面的代码截断文本,考虑到可变文本长度,我希望所有文本都显示而不被截断。
struct ContentView: View {
let data = ["O Menino","The Boy", "The Girl", "A Menina","Mae","Mother"]
let layout = [
GridItem(.adaptive(minimum:50))
]
var body: some View {
ScrollView{
LazyVGrid(columns: layout, spacing: 20){
ForEach(data, id: \.self){ item in
VStack{
Text(item).lineLimit(1)
}.background(Color.red)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它是VGrid,它垂直增长填充列。在你的情况下它只是一列。
如果您想让所有这些内容适合屏幕,您需要增加网格列的数量,例如
let data = ["O Menino","The Boy", "The Girl", "A Menina","Mae","Mother"]
let layout = Array(repeating: GridItem(.adaptive(minimum:50)), count: 4)
Run Code Online (Sandbox Code Playgroud)