我有一个VStack
,在.leading
内的ForEach
循环内具有对齐ScrollView
,并且不考虑对齐参数。如果我在VStack
循环之外只有一个ForEach
,则使用对齐参数,并且视图将正确显示。
ScrollView{
// THIS DISPLAYS CORRECTLY
VStack(alignment: .leading){
Text("namename")
.font(.headline)
.lineLimit(1)
Text("namename name")
.font(.subheadline)
.lineLimit(1)
}
.padding()
.frame(minWidth: 0, maxWidth: .infinity)
.background(Color.gray.opacity(0.20))
.cornerRadius(5)
.padding(.bottom)
ForEach(self.list_of_names, id: \.self) { item in
// THIS DOES NOT DISPLAY CORRECTLY
VStack(alignment: .leading){
Text(item)
.font(.headline)
.lineLimit(1)
Text(item + " name")
.font(.subheadline)
.lineLimit(1)
}
.frame(minWidth: 0, maxWidth: .infinity)
.background(Color.gray.opacity(0.20))
.cornerRadius(5)
.padding(.bottom)
}
}
.padding()
第一行具有正确的对齐方式,并且在ForEach
循环的外部,而其他行在循环的内部。蓝线代表我突出显示VStack
循环中的每个ForEach
在ForEach循环中创建的VStack似乎确实符合alignment参数。将文本与前端对齐仅适用于VStack中较短的项目。
在顶部VStack中,顶部的“ namename”仅位于左侧,因为下面的“ namename name”离ScrollView的中心宽得多。因此,顶级VStack并不是实现所需的ScrollView对齐的正确方法。
您在寻找什么:
将对齐参数添加到VStack的框架中
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)