44

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

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

视图截图

4

3 回答 3

101

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

VStack(spacing: 0) {
    // content here
}
于 2019-09-19T21:27:18.937 回答
7

分别地

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

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

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


一次全部

并且VStackHStack一个参数被调用spacing,你可以将它设置为0或任何其他你需要将它应用到所有元素的数字。

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

请注意,如果需要,这可能是负面的。

于 2020-02-04T12:50:43.210 回答
5

我用这个,

.padding(.top, -8)

更多细节在这里,

VStack(spacing: 0) {
   List { ...
   }
   VStack{ ... }.padding(.top, -8)
}
于 2020-11-27T03:12:01.880 回答