我是SwiftUI的初学者,在添加一些带有分隔符的VStack时遇到了ForEach布局的奇怪行为。
这里是示例:
struct TestUserView: View {
@State var users: [String] = ["John Doe",
"Jane Doe",
"James Doe",
"Judy Doe"]
var body: some View {
VStack {
ForEach(users, id: \.self) { user in
VStack(spacing: 0) {
// Text("")
// .background(Color.blue)
// .frame(height: 0)
//
Rectangle()
.frame(height: 5)
HStack {
Text(user)
.font(.system(size: 55, weight: .bold))
Spacer()
}
}
.background(Color.green)
}
}
.background(Color.purple)
}
}
看起来像这样:
请参见此紫色区域。我不希望它在那里。足够奇怪,如果在分隔符前添加文本,则它消失(无论是Rectangle,Divider还是Color.black)。只需取消注释注释的代码,它将如预期的那样。
只是想知道这是错误还是我不了解SwiftUI布局。
如果可以预期,请向我指出一些有用的文档。
使用的XCode 11.5
这是不同类型视图之间默认间距的效果。
这里是一个解决方案。经过Xcode 11.4 / iOS 13.4的测试。
var body: some View {
VStack(spacing: 0) { // << explicit spacing !!
// .. other code