I just noticed, that iOS 16 is using the accent color for the navigation bar back button. (SwiftUI) When running my app on iOS 15 devices it's white.
Is there a way to change that behavior? I want to have another accent color than white.
I just noticed, that iOS 16 is using the accent color for the navigation bar back button. (SwiftUI) When running my app on iOS 15 devices it's white.
Is there a way to change that behavior? I want to have another accent color than white.
You can set accentColor on the NavigationStack
You can try this:
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground() // configure
let backItemAppearance = UIBarButtonItemAppearance()
backItemAppearance.normal.titleTextAttributes = [.foregroundColor : UIColor.white] // fix text color
appearance.backButtonAppearance = backItemAppearance
let image = UIImage(systemName: "chevron.backward")?.withTintColor(.white, renderingMode: .alwaysOriginal) // fix indicator color
appearance.setBackIndicatorImage(image, transitionMaskImage: image)
UINavigationBar.appearance().tintColor = .white // probably not needed
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
UINavigationBar.appearance().compactAppearance = appearance
UINavigationBar.appearance().compactScrollEdgeAppearance = appearance
Sadly this method no longer works. It was working great in iOS 15 and below, but something must have changed.
In iOS 16 when you are using NavigationStack, you might use the .tint(YourColorHere):
NavigationStack {
// UI components here
}
.tint(YourColorHere)
UINavigationBar.appearance().barTintColor = UIColor(.black)