SwiftUI:如何在VStack中删除视图之间的边距?

时间:2019-09-19 20:36:50

标签: swiftui vstack

使用SwiftUI,我创建了一个VStack,其中包含一些固定元素和一个list元素。原因是,用户仅应滚动固定元素下方的区域。现在,我看到第二个固定元素和列表之间有一个空格。我不知道这个空间是从哪里来的,并想摆脱它,但是不知道如何。该区域标记为红色。

struct DashboardView : View, CoreDataInjected {

    var body: some View {
        GeometryReader { geometry in
            VStack {
                ScopeSelectorView().frame(maxWidth: .infinity).background(ColorPalette.gray)
                BalanceNumberView().frame(maxWidth: .infinity)
                List {
                    DashboardNavigationView(
                        height: geometry.size.height - ScopeSelectorView.height - BalanceNumberView.height
                    ).frame(maxWidth: .infinity).listRowInsets(.zero)
                }
            }
        }.background(Color.red).edgesIgnoringSafeArea(.all)
    }
}

Screenshot of view

3 个答案:

答案 0 :(得分:9)

由于您没有将spacing参数传递给VStack,因此它将根据上下文选择默认间距。如果您不希望有间距,请明确传递0。

VStack(spacing: 0) {
    // content here
}

答案 1 :(得分:4)

分开

您可以在任何视图上使用offset修饰符,以使每个内容的外观分别不同:

VStack {
    Circle()
    Circle().offset(x: 0, y: -20)
    Circle().offset(x: 0, y: 40)
}

请注意,它在两个方向上都可能为负。


一次全部

另外VStackHStack都有一个名为spacing的参数,您可以将其设置为0或将其应用于所有元素的任何其他数字。

VStack(spacing: 0) {
    Circle()
    Circle()
}

请注意为负数。

答案 2 :(得分:1)

我用这个

.padding(.top, -8)

此处有更多详细信息,

VStack(spacing: 0) {
   List { ...
   }
   VStack{ ... }.padding(.top, -8)
}