Это то же самое, что и ответ Симоны, но работает для iOS 5 и iOS <5. Это то, что я использую в приложении.Вам нужно вызвать <code>[UINavigationBar setupIos5PlusNavBarImage] где-нибудь в инициализации вашего приложения (applicationDidFinishLaunching: хороший кандидат).В iOS 5+ setupIos5PlusNavBarImage будет использовать новый протокол UIAppearance для установки фона, а переопределение drawRect будет игнорироваться.На iOS <5 setupIos5PlusNavBarImage в основном будет недоступен, а drawRect будет обрабатывать рисование изображения. </p>
Интерфейс:
@interface UINavigationBar (CustomNavigationBar)
+ (void) setupIos5PlusNavBarImage;
- (void) drawRect: (CGRect) rect;
@end
Реализация:
@implementation UINavigationBar (CustomNavigationBar)
+ (void) setupIos5PlusNavBarImage
{
if ([UINavigationBar respondsToSelector: @selector(appearance)])
{
[[UINavigationBar appearance] setBackgroundImage: [UIImage imageNamed: @"menuBar.png"] forBarMetrics: UIBarMetricsDefault];
}
}
- (void) drawRect: (CGRect) rect
{
UIImage* img = [UIImage imageNamed: @"menuBar.png"];
[img drawInRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end