我在a内的循环内具有VStack
with对齐方式.leading
,并且不遵守alignment参数。如果循环外只有一个,则使用alignment参数,并且视图将正确显示。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中,顶部的“名称名”仅离左侧那么远,因为下方的“名称名”距ScrollView的中心宽得多。因此,顶级VStack不是完全实现所需的ScrollView对齐的正确方法。
您要寻找的是:
保留VStack的对齐参数。
将对齐参数添加到VStack的框架中。
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句