SwiftUI,删除 VStack 中视图之间的 space?

SwiftUI, remove space between views in a VStack?

为什么三个蓝色矩形和列表之间有这么多space?如何删除 space 以便 VStack 堆栈中的所有视图都位于顶部?我尝试在列表后直接使用 Spacer(),但没有任何改变。

struct ContentView: View {
    
    init() { UITableView.appearance().backgroundColor = UIColor.clear }
    
    var body: some View {
        NavigationView {
            ZStack {
                Color.red
                    .ignoresSafeArea()
                VStack {
                    HStack {
                        Text("Faux Title")
                            .font(.system(.largeTitle, design: .rounded))
                            .fontWeight(.heavy)
                        Spacer()
                        Button(action: {
                            // settings
                        }, label: {
                            Image(systemName: "gearshape.fill")
                                .font(.system(.title2))
                        })
                    }
                    .padding()
                    
                    GeometryReader { geometry in
                        HStack() {
                            Text("1")
                                .frame(width: geometry.size.width * 0.30, height: 150)
                                .background(Color.blue)
                            Spacer()
                            Text("2")
                                .frame(width: geometry.size.width * 0.30, height: 150)
                                .background(Color.blue)
                            Spacer()
                            Text("3")
                                .frame(width: geometry.size.width * 0.30, height: 150)
                                .background(Color.blue)
                        }
                    }
                    .padding()
                    
                    List {
                        Text("One")
                        Text("Two")
                        Text("Three")
                        Text("Four")
                        Text("Five")
                        Text("Six")
                    }
                    .listStyle(InsetGroupedListStyle())
                }
            }
            .navigationBarHidden(true)
        }
    }
}

奖励问题:在网络开发中,您可以打开浏览器的网络检查器并使用元素选择器单击突出显示其边框的元素。对于像这样的事情很有用,你试图找出有问题的间距属于哪个元素。 Xcode中有类似的东西吗?

VStack(spacing: 0) {...} 
Spacer()

对于您的问题,您可以 Xcode 使用视图检查器。 https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/Xcode_Overview/ExaminingtheViewHierarchy.html

既然您知道带有蓝色矩形的 HStack 的高度将为 150,您应该使用 .frame(height: 150):

将其限制为该高度
GeometryReader { geometry in
    ...
}
.padding()
.frame(height: 150) //Here

否则,GeometryReader 将占据所有可用的垂直 space。

回复:您的 Web 开发比较,查看 Xcode 视图层次结构检查器。不完全一样,但一脉相承:https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/Xcode_Overview/ExaminingtheViewHierarchy.html