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

SwiftUI: How to remove margin between views in VStack?

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

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

由于您没有将 spacing 参数传递给 VStack,它会根据上下文选择默认间距。如果您不想要间距,请显式传递 0。

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

分别

您可以在任何视图上使用 offset 修饰符,使每个视图分别看起来不同:

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

注意两个方向都可能为负


一次全部

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

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

请注意,如果需要, 可以为负值。

我用这个,

.padding(.top, -8)

这里有更多细节,

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