Ответ 1
Это ошибка в iPad Mini iOS версии 7.1.
В типичном режиме они исправили одну проблему (пустую строку состояния) и создали другую.
Обязательно сообщите об ошибке Apple.
У меня есть приложение для iPhone с UIViewControllerBasedStatusBarAppearance, установленным в NO. Не на каком-либо устройстве, которое я тестировал (iPhone 4, 5, 5s, 5c, iPad 4ish), отображается строка состояния. Кроме iPad mini (1-го поколения). Использование iOS SDK - 7.1.
Строка состояния видна на iPad mini 1st gen. Я ожидаю, что строка состояния также будет скрыта в этой настройке.
Я даже попытался добавить [[UIApplication sharedApplication] setStatusBarHidden:NO];
в didFinishLaunchingWithOptions
, но ничего не меняя.
Строка состояния также настроена на "Скрыть во время запуска приложения".
iPad mini работает с iOS 7.1.
Да, это краевой случай, но на этот раз я просто не могу заставить его придумать ожидаемые результаты.
Еще один бит информации: я использую cocos2d-iphone v2.1. Никогда не сталкивался с этой проблемой, так как я выпустил кучу приложений с тем же движком. Я начинаю думать, что это ошибка, связанная с комбинацией: iOS 7.1 и iPad mini.
Это настройка:
Это ошибка в iPad Mini iOS версии 7.1.
В типичном режиме они исправили одну проблему (пустую строку состояния) и создали другую.
Обязательно сообщите об ошибке Apple.
У меня была та же проблема, и я хочу привести некоторые объяснения.
Проблема возникает только при запуске приложения iPhone (только) на iPad. Если приложение является универсальным, проблем не будет. Наиболее раздражающее поведение происходит с использованием приложения iPhone только для iPad без дисплея Retina. Поскольку строка состояния отменяет верхнюю часть приложения.
Мой файл plist:
Приложение для iPhone только
iPhone
IPad:
iPad Retina:
Универсальное приложение
iPhone:
IPad:
iPad Retina:
Просто добавление к ответу Giebler, так как у меня недостаточно репутации для комментариев, эта ошибка, похоже, также относится к устройствам не Retina, работающим под управлением iOS 7.x, включая iPad 2.
Вы должны установить "Просмотр строки состояния на основе контроллера" YES и в каждом представлении, которое вы хотите скрыть, вызовите этот метод. Лучше создайте контроллер базового представления для всех видов и вызовите его один раз.
- (BOOL)prefersStatusBarHidden {
return YES;
}
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Попробуйте установить это в свой файл info.plist.
У меня есть обходное решение. Добавьте следующее:
- (UIStatusBarStyle) preferredStatusBarStyle {
return -1;
}
где бы вы ни находились:
- (BOOL)prefersStatusBarHidden {
return YES;
}
Это, очевидно, ужасно, но, похоже, это работает для меня - по крайней мере, до сих пор.
Я заметил, что это вызывает вывод следующим образом:
<Error>: CGContextRestoreGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
Я нахожу другое обходное решение, и, возможно, эта ошибка является причиной того, что эта обходная работа работает, поэтому я придерживаюсь ее, но это стоит отметить.