Строка состояния не исчезнет

Я создаю приложение и хочу, чтобы строка состояния была скрыта. Когда я тестирую приложение, строка состояния скрывается, пока отображается заставка, но как только приложение полностью загружено, строка состояния появляется снова.

Я использую Xcode 5 и iOS 7 и попытался отключить строку состояния программно

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

в файле info.plist и с помощью инспектора атрибутов в файле.xib. Ничто не похоже на работу.

Есть идеи?

14 ответов

Решение

Попробуйте добавить следующий метод в корневой контроллер вашего приложения:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

Вы должны добавить это значение в plist: "Просмотреть внешний вид строки состояния на основе контроллера" и установить для него значение "NO".

Это позволит вам установить строку состояния в скрытый режим. Это устанавливает его на глобальный в отличие от других предоставленных ответов.

ОБНОВЛЕНИЕ: Если вы хотите, чтобы строка состояния была скрыта на заставке, не забудьте пометить "Скрыть во время запуска приложения" в параметрах целевой строки состояния. Кроме того, вы можете добавить "Статусная строка изначально скрыта" к "ДА" в списке, если вы не хотите делать это с помощью кода внутри приложения.

Размещенный вами код работает для iOS 6.1 и ниже. Для iOS 7 Apple сделала доступными новые методы для непосредственного управления строкой состояния для каждого представления. Отключение этой опции в вашем Info.plist позволит вам скрыть строку состояния, по крайней мере, для текущего предварительного просмотра разработчика (4).

Добавьте это и установите NO

Для справки, пожалуйста, ознакомьтесь с руководством по переходу с iOS 7, которое доступно на портале Apple для разработчиков.

Хорошо, я пытаюсь скрыть строку состояния во всех моих приложениях и в "app"-info.plist, и я добавляю две строки в словарь "Информационный список свойств", я добавляю "Просмотр внешнего вида строки состояния на основе контроллера", установите NO и in " Изначально скрыта строка состояния "установите ДА и у меня работает n_n'

информация о плисте

Однако, если вы используете UIImagePicker, строка состояния появляется снова.

В этом случае вы должны скрыть строку состояния, как показано ниже,

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }

После долгих поисков я наконец нашел очень простое решение, которое также заботится о UIImagePickerController проблема.

Как упоминалось в других ответах, установите строку состояния, скрытую в вашем AppDelegate didFinishLaunching, и установите для параметра "Просмотр внешнего вида строки состояния на основе контроллера" значение НЕТ.

Затем в вашем AppDelegate:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila - ваша строка состояния будет скрыта даже в том случае, если UIImagePickerController находится на первом месте.

Это лучше, чем "скрывать" его каждый раз, когда вы представляете UIImagePickerController, так как он остается скрытым во всем приложении.

Чтобы скрыть строку состояния в конкретном UIViewController, просто добавьте это:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

Надеюсь это поможет!

Вы можете скрыть от резюме проекта. есть флажок скрыть во время запуска.

Смотрите снимок

Я нашел это решение для меня. Отлично работает. Напишите этот код на вашем viewcontroller, для которого вы хотите использовать UIImagePickerController.

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
     }

Быстрое Решение

просто добавьте это в ваши контроллеры вида:

override func prefersStatusBarHidden() -> Bool {
    return true
}

В дополнение к ответу, приведенному выше, убедитесь, что реализовали метод imagePickerControllerDidCancel и добавили туда же код.

У меня тоже были проблемы с UIImagePicker. Аналогично ответу Alones, мое решение было следующим. Я добавил эту строку или код:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

к этой функции:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

Я не проверял это с iOS 6 или старше, но он прекрасно работает в iOS 7.

Я использую Xcode 6, это решение работает на iOS 7 и 8 для меня:

Во-первых, установите для параметра "Просмотр внешнего вида строки состояния на основе контроллера" значение "НЕТ" в файле plist.

Во-вторых, в AppDelegate добавьте это:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

Моя проблема заключалась в том, что я использовал сдерживание контроллера представления. Только самый верхний контроллер вида, который встроен в контроллер навигации, например, может скрывать или отображать строку состояния.

Другие вопросы по тегам