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

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

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

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

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

Любые идеи?

Ответ 1

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

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

Ответ 2

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

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

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

Ответ 3

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

Add this and set to NO

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

Ответ 4

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

plist info

Ответ 5

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

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

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

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

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }

Ответ 6

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

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

Затем в приложении AppDelegate:

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

et voila - ваша строка состояния останется скрытой, даже если UIImagePickerController является самым главным.

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

Ответ 7

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

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

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

Ответ 8

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

См. снимок

enter image description here

Ответ 9

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

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

Ответ 10

Помимо ответа от alones выше, обязательно реализуйте метод imagePickerControllerDidCancel и добавьте туда же код.

Ответ 11

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

[[UIApplication sharedApplication] setStatusBarHidden:YES];

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

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

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

Ответ 12

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

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

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

Ответ 13

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

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

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

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

Ответ 14

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