Ответ 1
Попробуйте добавить в свой контроллер корневого приложения следующий метод:
- (BOOL)prefersStatusBarHidden
{
return YES;
}
Я создаю приложение, и я хочу, чтобы строка состояния была скрыта. Когда я тестирую приложение, строка состояния скрыта, пока отображается экран заставки, но как только приложение будет полностью загружено, панель состояния снова появится.
Я использую Xcode 5 и iOS 7 и пытаюсь автоматически отключить строку состояния
([[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];),
в файле info.plist и с помощью инспектора атрибутов в файле .xib. Ничто не работает.
Любые идеи?
Попробуйте добавить в свой контроллер корневого приложения следующий метод:
- (BOOL)prefersStatusBarHidden
{
return YES;
}
Вы должны добавить это значение в plist: " Просмотреть статус панели управления на основе контроллера" и установить его в " НЕТ".
Это позволит вам установить строку состояния в скрытый режим. Это устанавливает его в глобальное отличие от других предоставленных ответов.
ОБНОВЛЕНИЕ:. Если вы хотите, чтобы строка состояния была скрыта на всплывающем экране, не забудьте пометить " Скрыть во время запуска приложения" в параметрах строки состояния. Кроме того, вы можете добавить " Строка состояния изначально скрыта" до " ДА" на plist, если вы не хотите делать это с кодом внутри приложения.
Код, который вы опубликовали, работает для iOS 6.1 и ниже. Для iOS 7 Apple разработала новые методы для прямого управления статусной строкой для каждого представления. Отключение этой опции в Info.plist позволит вам скрыть строку состояния, по крайней мере, для текущего предварительного просмотра разработчика (4).
Для справки, пожалуйста, ознакомьтесь с руководством по переходу на iOS 7, которое доступно на портале разработчиков Apple.
Хорошо, я пытаюсь скрыть строку состояния во всем моем приложении и в "приложении" -info.plist, и я добавлю две строки в словаре "Список информации о свойствах". Я добавляю "Просмотр строки состояния на основе контроллера". НЕТ и в "Строке состояния изначально скрыто" установлено ДА и для меня работает n_n '
Однако, если вы используете UIImagePicker, строка состояния снова появляется.
В этом случае вы должны скрыть строку состояния, как показано ниже,
- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {
// for iOS7
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
После долгого поиска я наконец нашел очень простое решение, которое также заботится о проблеме UIImagePickerController
.
Как уже упоминалось в других ответах, установите свою строку состояния, скрытую в вашем приложении AppDelegate doneFinishLaunching, и установите для параметра "Просмотр строки состояния на основе контроллера" значение НЕТ.
Затем в приложении AppDelegate:
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
[application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
et voila - ваша строка состояния останется скрытой, даже если UIImagePickerController является самым главным.
Это лучше, чем "rehiding" его каждый раз, когда вы представляете UIImagePickerController, поскольку он остается скрытым в приложении.
Чтобы скрыть строку состояния на конкретном UIViewController, просто добавьте это:
-(BOOL)prefersStatusBarHidden
{
return YES;
}
Надеюсь, это поможет!
Вы можете скрыть из резюме проекта. во время запуска скрывается флажок.
См. снимок
Я нашел это решение для меня. Отлично работает. Напишите этот код на вашем контролере просмотра, на который вы хотите включить UIImagePickerController.
- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
Помимо ответа от alones выше, обязательно реализуйте метод imagePickerControllerDidCancel и добавьте туда же код.
У меня были проблемы с UIImagePicker. Как и ответы Alones, мое решение было следующим. Я добавил эту строку или код:
[[UIApplication sharedApplication] setStatusBarHidden:YES];
к этой функции:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
Я не тестировал это с iOS 6 или старше, но отлично работает в iOS 7.
Быстрое решение
просто добавьте это в свои контроллеры просмотров:
override func prefersStatusBarHidden() -> Bool {
return true
}
Я использую Xcode 6, это решение работает на iOS 7 и 8 для меня:
Во-первых, установите для параметра "Просмотр строки состояния на основе контроллера" значение НЕТ в файле plist.
Во-вторых, в AppDelegate добавьте это:
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
[application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
Моя проблема заключалась в том, что я использовал сдерживание контроллера. Только контроллер верхнего уровня, встроенный в контроллер навигации, например, может скрывать или показывать строку состояния.