Objective-C: Фоновое изображение и заголовок на панели навигации - PullRequest
1 голос
/ 26 ноября 2010

При необходимости фоновое изображение и заголовок в моей панели навигации. Для изображения я пишу категорию:

@implementation UINavigationBar(MyNavigationBar)
- (void)setBackgroundImage {
    UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"navBarBackgrd.png"]];
    [self addSubview: aTabBarBackground];
    [self sendSubviewToBack: aTabBarBackground];
    [aTabBarBackground release];
}
@end

Я называю эту категорию в моем AppDelegate и имею фоновые изображения во всем приложении:

[navigationController.navigationBar setBackgroundImage]; 

Каждый ViewController имеет заголовок:

[self setTitle:@"MyTitle"];

Но после установки фонового изображения у меня проблема с заголовком.

В первом просмотре каждой работы я вижу фоновое изображение и заголовок :-) Но на следующем экране название исчезает. Видно только фоновое изображение. Может быть, заголовок под картинкой?

Технически возможно показать и то и другое. С этим трюком это работает:

  1. Скрыть панель навигации ДО открытия следующего ViewController:

    [self.navigationController setNavigationBarHidden: YES];

  2. Показать панель навигации в следующем ViewController:

    [self.navigationController setNavigationBarHidden: NO];

Теперь изображение и заголовок видны, но это решение не самое лучшее; -)

Ответы [ 2 ]

2 голосов
/ 11 августа 2012

После IOS5 Вы должны сделать это, например, в AppDelegate


 UIImage *img = [[UIImage imageNamed:@"image.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:0 green: 0 blue:0  alpha:1]];

2 голосов
/ 08 декабря 2010

Я понял!

@implementation UINavigationBar(MyNavigationBar)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"navBarBackgrd.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

См. Фоновое изображение для навигации

...