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


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

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

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

в инфо.plist файл, и с помощью инспектора атрибутов на .файл xib. Кажется, ничего не работает.

какие идеи?

14 110

14 ответов:

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

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

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

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

обновление: Если вы хотите, чтобы строка состояния была скрыта на экране заставки, не забудьте отметить " скрыть во время запуска приложения " в строке состояния цели опции. Кроме того, вы можете добавить " строка состояния изначально скрыта" на "да " на plist, если вы не хотите делать это с кодом внутри приложения.

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

Add this and set to NO

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

ну я пытаюсь скрыть строку состояния во всех моих приложений и в "приложение"-информация.plist и я добавляю две строки в Словарь "Список свойств информации" я добавляю "внешний вид строки состояния на основе контроллера" установить нет и в "строка состояния изначально скрыта" установить да и для меня работает n_n'

plist info

однако, если вы используете 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 является главным.

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

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

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

надеюсь, что это помогает !

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

снимок

enter image description here

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

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

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

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

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

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

у меня были проблемы с 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];
}

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