it-swarm.com.ru

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

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

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

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

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

Есть идеи?

110
user2397282

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

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
220
Quentin

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

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

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

124
Idan

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

Add this and set to NO

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

73
Sven

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

plist info

36
user_Dennis_Mostajo

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

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

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

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

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
17
alones

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

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

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

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

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

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

8
ikuramedia

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

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

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

7
Mike Gledhill

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

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

enter image description here

5
sohail.hussain.dyn

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

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

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

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

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

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

3
Swindler

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

[[UIApplication sharedApplication] setStatusBarHidden:YES];

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

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

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

2
Dev01

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

0
testing

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

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

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

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