Добавление изображения в UINavigationBar - PullRequest
4 голосов
/ 13 декабря 2011

Мне нужно поддерживать iOS4 и iOS5. Мой код хорошо работает на iOS4, но не работает на iOS5. Как решить проблему.

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"E_44.png"]];
imageView.frame = CGRectMake(136, 0, 52, 44);
[self.navigationController.navigationBar insertSubview:imageView atIndex:0];
[imageView release];

Ответы [ 2 ]

8 голосов
/ 13 декабря 2011

Настройка пользовательского фона для UINavigationBar для поддержки iOS5 и iOS4!


Как вы знаете, до выхода iOS 5 мы использовали drawRect override в AppDelegateнастроить UINavigationBar.Но знайте, iOS 5 дает нам новый метод для стилизации (а старый не работает).

Как создать приложение, которое будет работать на iOS 4 и iOS 5 со стилизованным UINavigationBar?

Вы должны сделать оба!

В AppDelegate использовать этот код:

@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed:@"navbar.png"];
[img drawInRect:rect];
}
@end

и метод viewDidLoad для iOS5 (в вашей реализации реализации):

if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
}

Если вы видите, здесь мы спрашиваем, будет ли navbar отвечать toSelector, чтобы избежать сбоя на iOS4!

3 голосов
/ 29 июня 2012

Это не добавляет фон, но это позволит вам добавить изображение на панель навигации

 // Create your image<br>
 UIImage *image = [UIImage imageNamed: @"yourimage.png"];<br>
 UIImageView *imageview = [[UIImageView alloc] initWithImage: image];

 // set the text view to the image view<br>
 self.navigationItem.titleView = imageView;

Надеюсь, это поможет.

...