如何在导航视图中顶部对齐表单。我有以下内容,当我从正文中删除NaviagationView时,该窗体在顶部对齐。将NavigationView放置在适当的位置,我会在它们之间留有间距(添加红色框以显示空间)。我可以在Form上使用.padding(.top,-20),但是在此方法工作时会稍微有些歪斜。
NavigationView {
Form {
VStack {
HStack {
Text("Name:").underline().font(.headline)
TextField("Name", text: $routine.name)
}
roundPicker()
TimeSelectionView(stateName: "A", stateDuration: "0:30", stateBackground: "#df405a")
TimeSelectionView(stateName: "B", stateDuration: "1:30", stateBackground: "#4ea1d3")
TimeSelectionView(stateName: "C", stateDuration: "3:00", stateBackground: "#4f953b")
}
}
.navigationBarTitle("Create", displayMode: .inline)
.navigationBarItems(trailing:
Button(action: {
//Save Routine
self.routine.rounds = self.roundsArray[self.rounds]
print("Workout Name: \(self.routine.name)")
print("Workout Rounds: \(self.routine.rounds)")
}, label: {
Text("Save")
})
)
}
答案 0 :(得分:3)
SwiftUI Form
实际上是幕后的分组样式UITableView
,默认为tableHeaderView
。因此,您可以像这样删除它:
struct ContentView: View {
init() {
UITableView.appearance().tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: Double.leastNonzeroMagnitude))
}
var body: some View {
,,,
}
}
答案 1 :(得分:3)
在Xcode 12中,设置表标题视图不再对我有用,而是设置负的top内容插入似乎可以实现相同的目的。
UITableView.appearance().contentInset.top = -35
答案 2 :(得分:0)
清洁器将导航栏标题添加到表单部分,然后设置为隐藏
Form {
// add end of form section
}.navigationBarHidden(true).navigationBarTitle("Title") // Form
答案 3 :(得分:0)
如果您使用 Introspect,请将其添加到您的 NavigationView
.introspectTableView {
$0.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: Double.leastNonzeroMagnitude))
}