When using SwiftUI how do you remove the bottom 1px border of a navigation bar?
In the initializer of your View you can set the appearance of your navigation bar. There you have to set the .shadowColor property to .clear.
init() {
let appearance = UINavigationBarAppearance()
appearance.shadowColor = .clear
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
}
I have also met this problem. Here is the almost similar post
But most of the answer had side effect. And for me, the best solution was this
UINavigationBar.appearance().barTintColor = .clear
UINavigationBar.appearance().backgroundColor = .clear
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
UINavigationBar.appearance().shadowImage = UIImage()
and also want its important to set UIImage() not 'nil' to shadowImage and bacgroundImage. And I made navigation displayMode inline
.navigationBarTitle(Text(""), displayMode: .inline)
SwiftUI, 1 line.
UINavigationBar.appearance().standardAppearance.shadowColor = .clear
I implemented that inside .onAppear {}
In Xcode 12.4, this is the combination that worked for me:
init() {
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().barTintColor = UIColor.red
}