Вызов соответствующего setStatusBarHidden на версию iOS

Сегодня мое приложение одобрило, но я добрался, электронные письма от пользователей говорит, что оно отказывает. Я выяснил это

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];

Проблема, поскольку у пользователей есть встроенное микропрограммное обеспечение 3.1.x, этот API не работает и сбой приложения.

Таким образом, я имею, заменяют его

    if ([[[UIDevice currentDevice] systemVersion] floatValue]>=3.2)
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
    else 
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];

Мои вопросы...

То, что я сделал лучшее решение?

Почему XCODE не предупредил меня, что SetStatusBarHidden withAnimation не находится в 3,0, в то время как я установил свое встроенное микропрограммное обеспечение ОС Traget 3.0?

Я должен проверить каждый API, чтобы видеть, работает ли он с моей Целью ОС?

Спасибо

10
задан Matthias Bauch 25 November 2012 в 12:37
поделиться

3 ответа

Я бы порекомендовал вам чтобы использовать следующий фрагмент кода вместо проверки версии ОС, лучше проверьте, доступен ли в настоящее время селектор.

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
else 
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
23
ответ дан 3 December 2019 в 15:51
поделиться

Это, вероятно, лучший вариант, кроме ограничения вашего приложения> = 3.2. в любом случае, ваш xcode должен выдать предупреждение о том, что сообщение SetStatusBarHidden withAnimation не поддерживается («может не отвечать»).

0
ответ дан 3 December 2019 в 15:51
поделиться

К сожалению, если вы компилируете SDK 4.0 с помощью симулятора, приведенные выше решения выдадут вам предупреждение, которое по умолчанию рассматривается как ошибка:

warning: 'setStatusBarHidden:animated:' is deprecated (declared at /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:267)

Таким образом, вы можете установить Для параметра «Обрабатывать предупреждения как ошибки» установите значение false в настройках сборки, или вы можете использовать макросы для условного включения правильного кода. У меня базовый SDK установлен на Device 4.0, моя целевая ОС - 3.1, и я использую этот макрос:

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
#if __IPHONE_OS_VERSION_MIN_REQUIRED > 30100
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];
#else
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
#endif
#endif

Обратите внимание, что setStatusBarHidden: withAnimation появился в версии 3.2.

1
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: