Сборка iPhone, которая поддерживает версии 4.0 до 5.0, используя Xcode 4.2 - PullRequest
2 голосов
/ 03 ноября 2011

Привет, я работаю над iOS SDK5 с xcode 4.2 и хочу подготовить сборку, которая должна быть совместима с iOS 4.0 до 5.0 или, по крайней мере, 4.3 и 5.0

Я установил базовый sdk на 5.0 и цель развертывания на 4.0, но когда я запускаю приложение в симуляторе iPhone 4, мое приложение вылетает в основном из-за кода, написанного ниже

[testNavigationBar setBackgroundImage:[UIImage imageNamed:@"facebook-navbar.png"] forBarMetrics:UIBarMetricsDefault];

, но приведенный выше код работает нормально, когда я переключаю симулятор iPhone с 4 на 5, также я пробовал setBackgroundColor, но он не работает, так что любезно помогите мне в этом.

Ответы [ 3 ]

2 голосов
/ 03 ноября 2011

Проблема в том, что метод был добавлен в iOS5, поэтому он не существует в iOS4.Вам нужно проверить во время выполнения, чтобы убедиться, что вы находитесь в iOS5, например:

if ([testNavigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics)]) {
    [testNavigationBar setBackgroundImage:[UIImage imageNamed:@"facebook-navbar.png"] forBarMetrics:UIBarMetricsDefault];
}

Теперь проблема в том, что вы не получите фон в iOS4, поэтому вам придетсянайти обходной путь.

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

Для iOS версии 4.x вы всегда можете переопределить UINavigationBar drawRect. Вот сообщение о переполнении стека на эту тему:

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

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

Это потому, что -setBackgroundImage: был представлен в iOS 5, и Apple, как правило, не поддерживает перенос нового API на старые платформы, как правило.В любом случае, у вас есть два варианта:

if ([testNavigationBar respondsToSelector:@selector(setBackgroundImage:)]) {
  // do what you're currently trying
}
else {
  //find a compatible way to do it
}

или:

//find a compatible way to do it
...