user2414460
user2414460

Reputation: 211

navigationBar.barTintColor always black and not possible to change it

The navigationBar.barTintColor in my app is always black, and there is no way I can change it. I checked all classes and I never set it to black, but I do set it to UIColor clearColor. Still, the bar is black. Any suggestions?

Edit:
I found out that the problem is with my [UIColor clearColor], when I change it to any other color it changes the color like it should, but clearColor makes it appear black.

Upvotes: 2

Views: 2646

Answers (4)

coder1010
coder1010

Reputation: 412

In iOS 7 try:

[self.navigationController.navigationBar setTranslucent:NO];

Upvotes: 0

Bhavesh Nayi
Bhavesh Nayi

Reputation: 3656

if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];

    [[UINavigationBar appearance] setTitleTextAttributes:
     @{
       UITextAttributeTextColor: [UIColor whiteColor],UITextAttributeTextShadowColor: [UIColor clearColor],UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],UITextAttributeFont: [UIFont fontWithName:@"ArialMT" size:18.0f]
       }];


    CGFloat verticalOffset = -4;
    [[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];
}
else
{
    [[UINavigationBar appearance] setBarTintColor:[UIColor whiteColor]];

    // Uncomment to change the color of back button
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

    // Uncomment to assign a custom backgroung image
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg_ios7.png"] forBarMetrics:UIBarMetricsDefault];

    // Uncomment to change the back indicator image

    [[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@""]];
    [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@""]];

    // Uncomment to change the font style of the title

    NSShadow *shadow = [[NSShadow alloc] init];
    shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
    shadow.shadowOffset = CGSizeMake(0, 1);

    [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,shadow, NSShadowAttributeName,[UIFont fontWithName:@"ArialMT" size:18.0], NSFontAttributeName, nil]];

    CGFloat verticalOffset = -4;
    [[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];
}

Upvotes: 0

Dileep
Dileep

Reputation: 2425

If its IOS7 try the code below

[[UINavigationBar appearance]setBarTintColor: [<Specify the UIColor you want>];

In IOS6 try this

[[UINavigationBar appearance] setTintColor: [<Specify the UIColor you want>];

Edit:

I think you have given

self.navigationController.navigationBar.barTintColor = [UIColor clearColor];

This will give black color. If you want any specific tint color, it must be specifed after clearing

self.navigationController.navigationBar.barTintColor = [UIColor clearColor];
self.navigationController.navigationBar.barTintColor = [UIColor <specify your color>];

Upvotes: 1

user3250560
user3250560

Reputation: 666

Have a look there

enter image description here

Try modifying the Style and Translucent attributes on the navigation bar (top right in image).

If you are having problems modifying the status bar color, try adding this to your .plist (line below).

enter image description here

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

Finally, here's some code you may want.

// Status bar color
[[UIApplication sharedApplication] setStatusBarStyle:yourStyle];

// Navigation bars color
[UINavigationBar appearance].barStyle = yourStyle;
[UINavigationBar appearance].barTintColor = [UIColor yourColor];

// Navigation bars items color
[UINavigationBar appearance].tintColor = [UIColor yourColor];

Upvotes: 1

Related Questions