Как скрыть строку состояния в iOS?

Я могу скрыть строку состояния в моем приложении:

- (void)viewDidLoad{
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [super viewDidLoad];
    }

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

15 ответов


добавьте следующий код в контроллер вида:

if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
    // iOS 7
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
} else {
    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

вам нужно добавить этот код в файл AppDelegate, а не в корневой контроллер вида

или добавить свойство строка состояния изначально скрыта в вашем файле plist

enter image description here

ребята, в iOS 7+

пожалуйста, добавьте это к вашей информации.plist файл, это будет иметь значение:)

UIStatusBarHidden UIViewControllerBasedStatusBarAppearance

enter image description here

для iOS 11.4+ и Xcode 9.4 +

используйте этот код либо в одном, либо во всех контроллерах вида

переопределить var prefersStatusBarHidden: Bool { вернуть true }


Что мне помогло это (изменение файла plist):

  1. set строка состояния изначально скрыта = YES
  2. добавить строку: вид контроллера на основе строки состояния внешний вид = нет

Hide StatusBar - plist settings


поместите этот код в контроллер вида, в котором вы скрываете строку состояния:

- (BOOL)prefersStatusBarHidden {return YES;}

в iOS 7 внешний вид строки состояния зависит от UIViewController по умолчанию. Чтобы скрыть строку состояния глобально, в info.plist использовать NO значение UIViewControllerBasedStatusBarAppearance ключ и использовать UIApplication ' s setStatusBarHidden метод YES BOOL значение.


добавьте этот ключ из выпадающего списка в " info.plist " и вуаля вы больше не увидите верхнюю панель,которая включает в себя элементы, такие как GSM, wifi значок и т.д.
enter image description here


на info.plist

View controller-based status bar appearance NO
Status bar is initially hidden YES

на view controller.m

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

Я поддерживаю iOS 5, 6 и 7. Мое приложение только для iPad. Мне нужно было использовать все следующее:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

Контроллер Вид:

- (BOOL)prefersStatusBarHidden{ return YES; }

информация.файл plist

    <key>UIStatusBarHidden</key>
    <string>YES</string>

    <key>UIStatusBarHidden~ipad</key>
    <true/>

    <key>UIViewControllerBasedStatusBarAppearance</key>
    <string>NO</string>

это работает для меня ,

пожалуйста, добавьте ниже код в инфо.plist file,

 <key>UIStatusBarHidden</key>
 <false/>
 <key>UIViewControllerBasedStatusBarAppearance</key>
 <false/>

надеется, что это работа для кого-то .


просто установите флажок в Targets / Summary iPad Deployment Info, и строка состояния исчезнет. Он работает в моих приложениях.


у меня была такая же проблема, но ее легко исправить! Просто установите

status bar is initially hidden = YES

затем добавьте строку, нажав на плюс сразу после текста status bar is initially hidden, затем установите текст в

view controller-based status bar appearance

, нажав стрелки, и установите его в NO

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


ну, самый простой способ, которым я это делаю, - это ввести следующее .m-файл.

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

Это должно работать!


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

полное решение в swift, в вашем контроллере вида

// you can use your own logic to determine if you need to hide status bar
// I just put a var here for now
var hideStatusBar = false
override func preferStatusBarHidden() -> Bool {
    return hideStatus
}


// in other method to manually toggle status bar
func updateUI() {
    hideStatusBar = true
    // call this method to update status bar
    prefersStatusBarHidden()
}

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

процедура 1:

[[UIApplication sharedApplication] setStatusBarHidden: YES withAnimation: UIStatusBarAnimationNone];

процедура 2:

- (BOOL)prefersStatusBarHidden {

       return YES;

}

скрыть строку состояния для всего приложения, мы должны следовать приведенной ниже процедура:

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

Нажмите здесь, чтобы посмотреть скриншот