I am new to SwiftUI (like most people) and trying to figure out how to remove some whitespace above a List that I embedded in a NavigationView
In this image, you can
For me, I was applying the .navigationBarTitle
to the NavigationView
and not to List
was the culprit. This works for me on Xcode 11.2.1:
struct ContentView: View {
var body: some View {
NavigationView {
List {
NavigationLink(destination: DetailView()) {
Text("I'm a cell")
}
}.navigationBarTitle("Title", displayMode: .inline)
}
}
}
You could extend native View protocol like this:
extension View {
func hideNavigationBar() -> some View {
self
.navigationBarTitle("", displayMode: .inline)
.navigationBarHidden(true)
}
}
Then just call e.g.:
ZStack {
*YOUR CONTENT*
}
.hideNavigationBar()
If you set the title as inline for the View you want remove the space on, this doesn't need to be done on a view with a NavigationView, but the one navigated too.
.navigationBarTitle("", displayMode: .inline)
then simply change the Navigation bars appearance
init() {
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
UINavigationBar.appearance().shadowImage = UIImage()
}
on the view that holds the initial NavigationView.
If you want to change the Appearance from screen to screen change the appearance in the appropriate views