1

我希望我的部分视图包含在 aForm中,但不是全部。我不想Form占用太多空间,所以我使用.frame(). 虽然在 Form 上面还有很多余量。这是我的代码。

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                VStack {
                    Form {
                        Text("Some text in a form")
                    }
                        .frame(width: 400, height: 90) // shrinks Form size, but doesn't remove margin
         
                    Text("Some more text")
               }
            }
        }
    }
}

.frame()高度似乎并没有消除表单顶部的多余空间(浅灰色区域)。

iPhone 屏幕截图包含带有额外上边距的表单

我也尝试添加.listRowInsets(EdgeInsets())到第一个Text视图,但这并没有删除上边距。有任何想法吗?

4

2 回答 2

1

表单没有隐藏标题的直接属性。为此,您需要使用如下部分 -

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                VStack {
                     Form {
                        Section(header: VStack(alignment: .center, spacing: 0) {
                           Text("Some text in a form").foregroundColor(Color.black).padding(.all, 6)
                        }) {
                            EmptyView()
                        }
                     }
                     .frame(width: 400.0, height: 40.0)
         
                    Text("Some more text")
               }
            }
        }
    }
}
于 2020-07-13T18:03:00.190 回答
0

该空白区域是大标题的导航视图栏空间(默认情况下),在您的情况下为空,因此只需隐藏它

    var body: some View {
        NavigationView {
            ScrollView {
                VStack {
                    Form {
                        Text("Some text in a form")
                    }
                        .frame(width: 400, height: 90) // shrinks Form size, but doesn't remove margin

                    Text("Some more text")
               }
            }
            .navigationBarTitle("")            // << this !!
            .navigationBarHidden(true)      // << and this !!
        }
    }
于 2020-07-13T18:24:59.290 回答