SwiftUI无法删除选择器上方的空间-表单版本
我正在为SwiftUI中的选择器格式苦苦挣扎。我建立了一个简单的 一个视图应用程序中具有其他一些视图的选择器。页眉之间有一个空格 和我无法删除的选择器。我愿意将灰色设置为白色。如果 我改变了收紧拣选机的拣选机的框架-保留了灰色空间 无动于衷。我不确定该怎么称呼这个空间-它似乎并没有 标题,领料器,表格或部分的内容。
我发现的唯一对此问题的参考是第57851878条,建议将 标题本身中的视图。那是行不通的,反正是个坏主意。
主题中红色区域为红色:
这是代码:
struct ContentView: View {
@State private var thing: String = ""
@State private var enableSaveButton = false
@State private var selection = 0
@State private var selection2 = 0
var things = ["books","desks","chairs","lamps","couches","shelves"]
var body: some View {
NavigationView {
//ScrollView{
VStack {
Group {//first group
VStack {
Text("Text at the Top")
TextField("enter something here", text: $thing)
.frame(width:350, height: 50)
.clipShape(RoundedRectangle(cornerRadius: 12))
.overlay(RoundedRectangle(cornerRadius: 12)
.stroke(Color.gray, lineWidth: 2))
.padding(.leading, 5)
.padding(.bottom, 20)
Section(header: HStack {
Text("This is the Header")
.font(.headline)
.foregroundColor(.blue)
.padding(.bottom, 0)
.padding(.leading, 30)
Spacer()
}
.background(Color.white)
.listRowInsets(EdgeInsets(
top: 0,
leading: 0,
bottom: 0,
trailing: 0))
) {
Form {
Text("This is the Chosen Thing: \(self.things[selection2])")
Picker(selection: self.$selection2, label: Text("Choose Thing").foregroundColor(.blue)) {
ForEach(0 ..< things.count) {
Text(self.things[$0])
}
}//picker
}//form
.frame(width:350, height: 115)
.padding(.top, 0)
}//first picker section
}//vstack
}//first group
Spacer()
Group {//second Group
Text("Enable and Disable this button")
Button(action: {
print("whatever")
} ) {
ZStack {
RoundedRectangle(cornerRadius: 20)
.fill(Color.yellow)
.frame(width: 100, height: 40)
Text("Save").font(.headline)
}
}
.shadow(radius: 12, x: 10, y: 10)
//.disabled(!enableSaveButton)
}//second Group
}//outer VStack
//}//Scrollview
.navigationBarTitle("Things")
}//nav view
}//body
}
Any guidance would be appreciated. Xcode 11.2.1 (11B500)
答案 0 :(得分:3)
您可以通过添加以下代码来删除 upper
的lower
和Form
空间
struct ContentView: View {
init() {
UITableView.appearance().tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: Double.leastNonzeroMagnitude))
UITableView.appearance().tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: Double.leastNonzeroMagnitude))
}
//your code .....
}
答案 1 :(得分:0)
它看起来像是表格的节头...
如果您这样更改代码,将会看到一个节标题文本。为什么SwiftUI会自己执行此操作...我不知道....不幸的是,即使将框架设置为高度0,它也不会消失。...
Form {
Section(header: Text("General Settings")){
Text("This is the Chosen Thing: \(self.things[selection2])")
}
Picker(selection: self.$selection2, label: Text("Choose Thing").foregroundColor(.blue)) {
ForEach(0 ..< things.count) {
Text(self.things[$0])
}
}//picker
}//form
.frame(width:350, height: 115)
.padding(.top, 0)
答案 2 :(得分:0)
另一种可能性是设置表格视图和表格视图单元格的背景色,以便在init()中清除
Init() {
UiTableView.appearance().backgroundColor = .clear
UITableViewCell.appearance().backgroundcolor = .clear
}
这不会消除空间,但是会使基础表对窗口背景色透明