SwiftUI ForEach垂直分隔线布局很奇怪

问题描述 投票:0回答:1

我是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)
    }
}

看起来像这样:

Purl area

请参见此紫色区域。我不希望它在那里。足够奇怪,如果在分隔符前添加文本,则它消失(无论是Rectangle,Divider还是Color.black)。只需取消注释注释的代码,它将如预期的那样。

只是想知道这是错误还是我不了解SwiftUI布局。

如果可以预期,请向我指出一些有用的文档。

使用的XCode 11.5

swiftui divider vstack
1个回答
0
投票

这是不同类型视图之间默认间距的效果。

这里是一个解决方案。经过Xcode 11.4 / iOS 13.4的测试。

    var body: some View {
        VStack(spacing: 0) { // << explicit spacing !!

        // .. other code
© www.soinside.com 2019 - 2024. All rights reserved.