user3140296
user3140296

Reputation: 169

UIbarbutton blue instead of background image

i'm trying to add a back button using a custom png file for the background, but every time i add the background using the storyboard it just become blue like this:

How can i add a background image on a UIbarbutton?

enter image description here

the back button look like this:

enter image description here

Upvotes: 0

Views: 212

Answers (2)

rdelmar
rdelmar

Reputation: 104082

This is the standard behavior in iOS 7 for an image in a button. The image is rendered as a template image, with opaque areas colored the current tint color, and transparent areas, transparent. If you want to see the image, you need to create the image with imageWithRenderingMode: and pass UIImageRenderingModeAlwaysOriginal as the argument.

Upvotes: 1

Raz
Raz

Reputation: 2643

You will need to do it grammatically. I have tried doing it in storyboard, and it looks like there is a really strange bug, that causes the developer to decide - either use text or use an image, not both....

- (void)viewDidLoad
{
     [super viewDidLoad];

     [self addButtonsToNavigationBar];

}


- (void)addButtonsToNavigationBar
{
     UIButton *regularButton = [[UIButton alloc] initWithFrame: CGRectMake(0, 0, 100.0f, 30.0f)];
     UIImage *historyButtonImage = [UIImage imageNamed:@"image_name.png"];
      // can set the background color instead of setting an image. 
     [regularButton setBackgroundImage:historyButtonImage forState:UIControlStateNormal];

     [regularButton setTitle:@"Some button name" forState:UIControlStateNormal];
     [regularButton addTarget:self action:@selector(historyButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
     UIBarButtonItem *navigationBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:regularButton];
     self.navigationItem.leftBarButtonItem = navigationBarButtonItem;
}

Upvotes: 0

Related Questions