Ankit Ahuja
Ankit Ahuja

Reputation: 73

Nav bar is translucent, but I would like transparent

I have followed the top guides on how to make my top bar transparent, but the best I can get is translucent. I am also trying to get the buttons white, not default blue. What am I missing?

@implementation FindAssetLocationMapViewController

- (void) viewWillAppear:(BOOL)animated {
    self.edgesForExtendedLayout = UIRectEdgeAll;
    self.extendedLayoutIncludesOpaqueBars = true;
    [self.navigationController.navigationBar setTranslucent:YES];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
    self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
    self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
    self.view.backgroundColor = [UIColor redColor];
}

Images are below. Should I take screenshots of the FindAssetLocationMapViewController attributes as well? Just to clarify, the nav controller and nav bar attributes do not have a class associated with them.

Translucent not Transparent - red for clarity

Nav Controller Attributes

Nav Bar Attributes

Upvotes: 0

Views: 205

Answers (1)

Michael
Michael

Reputation: 6899

Try this code in your app delegate, then remove the code you have:

+ (UIImage *)imageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0, 0, 1, 1);

    // create a 1 by 1 pixel context
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
    [color setFill];
    UIRectFill(rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

Place this inside application:didFinishLaunchingWithOptions:

    //create background images for the navigation bar
    UIImage *clear = [AppDelegate imageWithColor:[UIColor clearColor]];

    //customize the appearance of UINavigationBar
    [[UINavigationBar appearance] setBackgroundImage:clear forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setBackgroundImage:clear forBarMetrics:UIBarMetricsCompact];
    [[UINavigationBar appearance] setTranslucent:NO];
    [[UINavigationBar appearance] setShadowImage:[UIImage new]];

Upvotes: 1

Related Questions