Reputation: 1917
Having some problems with customizing the UINavigationController. The size change is working, but the (1px*60px) image is not working. The code is located in the MasterViewController.
Any ideas?
@implementation UINavigationBar (custom)
- (CGSize)sizeThatFits:(CGSize)size {
CGSize newSize = CGSizeMake(self.frame.size.width,60);
return newSize;
}
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"navimg.png"];
[image drawAsPatternInRect:CGRectMake(0, 0,self.frame.size.width, self.frame.size.height)];
}
@end
Upvotes: 0
Views: 479
Reputation: 243146
From the documentation:
In iOS 5, the
UINavigationBar
,UIToolbar
, andUITabBar
implementations have changed so that thedrawRect:
method is not called unless it is implemented in a subclass. Apps that have re-implementeddrawRect:
in a category on any of these classes will find that thedrawRect:
method isn't called. UIKit does link-checking to keep the method from being called in apps linked before iOS 5 but does not support this design on iOS 5 or later. Apps can either:
- Use the customization API for bars in iOS 5 and later, which is the preferred way.
- Subclass
UINavigationBar
(or the other bar classes) and overridedrawRect:
in the subclass.
Upvotes: 2