I have an iPhone application using UINavigationController
and would like to customize the elements with custom background images. I was able to do this for the UINavigationController's
UINavigationBar
pretty easily using Objective-C categories as below:
http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html
I'd like to do the same for the UINavigationController's
UIToolbar
, but the same approach doesn't seem to work (although I have absolutely no idea why not.) I've looked around and people seem to suggest subclassing UIToolbar
, but this isn't possible for the UINavigationController's
toolbar, which is a read-only UIToolbar
. I want to use the UINavigationController's
toolbar instead of just making a subview toolbar because I'm using the slide-in setToolbarHidden
animation.
Anyone have any idea if it's possible to apply a background image to this UINavigationController
toolbar (most likely by somehow overriding the drawRect
method)?
Update:
In iOS 5.0+ you now can use UIAppearance
to customize the navigation bar.
Another way to do this is to simply create a Category for your application's UINavigationBar
class. This was pretty straightforward to implement:
Interface:
@interface UINavigationBar (TENavigationBar)
- (void) drawRect:(CGRect)rect;
@end
Implementation:
@implementation UINavigationBar (TENavigationBar)
- (void) drawRect:(CGRect)rect
{
UIImage *image = [UIImage imageNamed:@"navigation_background"];
[image drawInRect:CGRectMake(0,
0,
self.frame.size.width,
self.frame.size.height)];
}
@end
Then this will be globally applied to all your UINavigationBar
's automatically.