To modify the background color of the navigation bar when using the inline navigationBarTitleDisplayMode
, you can use the background()
modifier on the navigationBarColor
view modifier. Here's an example:
struct ContentView: View {
var body: some View {
NavigationView {
Text("Hello, world!")
.navigationBarTitle("Home", displayMode: .inline)
.navigationBarColor(UIColor.red) // Sets the background color of the navigation bar to red
}
}
}
extension View {
func navigationBarColor(_ backgroundColor: UIColor?) -> some View {
self.modifier(NavigationBarColor(backgroundColor: backgroundColor))
}
}
struct NavigationBarColor: ViewModifier {
var backgroundColor: UIColor?
init(backgroundColor: UIColor?) {
self.backgroundColor = backgroundColor
let coloredAppearance = UINavigationBarAppearance()
coloredAppearance.configureWithOpaqueBackground()
coloredAppearance.backgroundColor = backgroundColor
UINavigationBar.appearance().standardAppearance = coloredAppearance
UINavigationBar.appearance().scrollEdgeAppearance = coloredAppearance
}
func body(content: Content) -> some View {
content
}
}
In this example, we've created a custom navigationBarColor
view modifier that sets the background color of the navigation bar to the specified color. We've also used UINavigationBarAppearance
to configure the appearance of the navigation bar and set it to the standard and scroll edge appearances for consistency. Finally, we've applied the navigationBarColor
modifier to the Text
view in our NavigationView
.
Asked: 2021-09-17 11:00:00 +0000
Seen: 11 times
Last updated: Oct 20 '22