Настройка фонового изображения панели навигации для двух разных ОС - PullRequest
0 голосов
/ 30 ноября 2011

Я использую следующий код для установки фонового изображения для панели навигации для iPhone OS 5: [self.navigationController.navigationBar setBackgroundImage: [UIImage imageNamed: @ "tab bar.jpg"] forBarMetrics: UIBarMetricsDefault];

Если я создам сборку для iPhone под управлением ОС версии 5 ... возникнет ли какая-либо проблема, если кто-то загрузит приложение и попытается запустить на устройстве ОС под управлением версии 5 ниже

Спасибо

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Метод setBackgroundImage:forBarMetrics: недоступен в iOS 4 или ниже. Таким образом, вызов этого метода приведет к краху вашего приложения.

Просто проверьте, реагирует ли объект на селектор:

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

Помните, что переопределение метода drawRect:, используемого в iOS 4 и ниже, не работает в iOS 5. Таким образом, вы должны реализовать оба способа заставить ваше приложение работать на iOS 4 и 5.

0 голосов
/ 23 января 2013

// Добавить кадр QuartzCore в файл .h

#import <QuartzCore/QuartzCore.h>

// Если вы хотите установить разные изображения для каждого вида. Запишите этот код в viewWillAppear метод // NavigationBar фоновое изображение.

if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)])
{
    //For iOS >= 5
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"topbar.png"] forBarMetrics:UIBarMetricsDefault];
}
else {
    //For iOS < 5
    NSString *barBgPath = [[NSBundle mainBundle] pathForResource:@"topbar" ofType:@"png"];
    [self.navigationController.navigationBar.layer setContents:(id)[UIImage imageWithContentsOfFile: barBgPath].CGImage];
}
0 голосов
/ 30 ноября 2011

Согласно документации:

 - (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics
Available in **iOS 5.0 and later.**

Поэтому вам следует проверить текущую версию iOS и использовать IOS 5:

 setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics.

и если вы хотите установить фон в 4.0, вот ответ, описывающий, как это сделать, добавив подпредставление или используя категорию:

iPhone - пользовательский фон NavigationBar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...