views:

1412

answers:

2

I'd like an image to take up all of a navigation bar. This is the navigation that comes with a navigation based app. It appears on the RootViewController with the accompanying UITableView. I've seen some examples of how this might work.

Set navigation bar title:

UIImage *image = [UIImage imageNamed:@"TableviewCellLightBlue.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.navigationController.navigationBar.topItem setTitleView:imageView];

The problem there is it only covers the title rather than the entire navigation bar.

There is also this thread: http://discussions.apple.com/message.jspa?messageID=9254241#9254241. Towards the end, the solution looks to use a tab bar, which I'm not using. It is that complicated to set a navigation bar background? Is there some other simpler technique?

I'd like to have a background for the navigation and still be able to use title text.

+2  A: 

In your case, this solution found in another answer would work well.

With the "CustomImage" category added to UINavigationBar, you can then just call:

UINavigationBar *navBar = self.navigationController.navigationBar;
UIImage *image = [UIImage imageNamed:@"yourNavBarBackground.png"];
[navBar setBackgroundImage:image];

This code should go in the method

- (void)viewWillAppear:(BOOL)animated

of the view controller where you want to have the custom image. And, in that case you should better call:

[navBar clearBackgroundImage]; // Clear any previously added background image

before setBackgroundImage (otherwise it will be added multiple times...)

Jean Regisser
Perfect. Thanks. In addition, do you know how I can set the title bar color? I've tried this but it isn't working: [self.navigationController.navigationBar.titleView setBackgroundColor:[UIColor blueColor]];
4thSpace
I've also tried [navBar setBackgroundColor: [UIColor blueColor]];
4thSpace
There is the tintColor property: try navBar.tintColor = [UIColor blueColor];
Jean Regisser
Thanks. I tried tintColor but it isn't having any affect.
4thSpace
If I leave off the setBackgroundImage part, the title text color still doesn't change with tintColor or BackgroundColor. I'm guessing we are in the wrong layer for changing that particular text.
4thSpace