Jest wzdłuż tej samej linii, co odpowiedź Simone, ale pracuje dla iOS 5 i iOS < 5. To jest to, czego używam w aplikacji. Musisz zadzwonić pod numer [UINavigationBar setupIos5PlusNavBarImage]
gdzieś w inicjalizacji aplikacji (applicationDidFinishLaunching: jest dobrym kandydatem). Na iOS 5+ setupIos5PlusNavBarImage użyje nowego protokołu UIAppearance do ustawienia tła, a nadpisanie drawRect zostanie zignorowane. W przypadku iOS < 5, setupIos5PlusNavBarImage będzie w zasadzie operacją "no-op", a drawRect zajmie się rysowaniem obrazu.
Interfejs:
@interface UINavigationBar (CustomNavigationBar)
+ (void) setupIos5PlusNavBarImage;
- (void) drawRect: (CGRect) rect;
@end
Realizacja:
@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
iOS5 jest pod NDA więc myślę, że można dyskutować na dedykowanych forach Apple'a tylko – Vladimir