Home > Net >  In Xcode 13 [[UINavigationBar appearance] setBarTintColor: not working properly?
In Xcode 13 [[UINavigationBar appearance] setBarTintColor: not working properly?

Time:09-29

I have updated my Xcode into 13, later on words in my old project navigation and tab bars colours was changed to transparent.

My Code is

[[UINavigationBar appearance] setBarTintColor:[UIColor AppThemeColour]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTranslucent:NO];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

I tried to add background colour but title and images of the navigationBar not appering.

self.navigationController.navigationBar.backgroundColor = [UIColor bOneAppThemeColor];
[[UINavigationBar appearance] setBarTintColor:[UIColor AppThemeColour]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTranslucent:NO];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

I have studied this below link but i'm unable to implement it in Objective C

https://developer.apple.com/forums/thread/682420

CodePudding user response:

Almost everything you're doing is wrong (and has been wrong for several years). You need to use UINavigationBarAppearance (and UITabBarAppearance) and apply them to both the bar's standardAppearance and its scrollEdgeAppearance. Set the appearance's background color, not its tint color. And do not touch the translucent property ever.

In this simple example, we make all navigation bars adopt your theme color. Modify to suit your needs and desires:

if (@available(iOS 13.0, *)) {
    UINavigationBarAppearance* appear = [UINavigationBarAppearance new];
    appear.backgroundColor = [UIColor AppThemeColor];
    id proxy = [UINavigationBar appearance];
    [proxy setStandardAppearance: appear];
    [proxy setScrollEdgeAppearance: appear];
} else {
    // Fallback on earlier versions
}
  • Related