Скрыть строку состояния в приложении iOS 8


Я пробовал

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

этого ничего не делает.

и я заглянул в свой Info.plist файл для "вид контроллера на основе внешнего вида строки состояния", но его там нет.

Как я могу скрыть панель состояния в верхней части экрана (с часами и зарядом батареи) внутри моего приложения в Xcode 6? Спасибо!

7 72

7 ответов:

вам нужно переопределить этот метод на каждом контроллере представления, если у вас нет этой записи plist.

С

-(BOOL)prefersStatusBarHidden{
    return YES;
}

Swift 2

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

Swift 3+

override var prefersStatusBarHidden: Bool {
    return true
}

и не забудьте установить (если вы представляете контроллер вида, вызвав presentViewController:анимированные:окончание: метод):

С

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;

Свифт

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true

документация: https://developer.apple.com/reference/uikit/uiviewcontroller/1621453-modalpresentationcapturesstatusb

если вы измените строку состояния с какого-либо контроллера вида контейнера (например. UINavigationController или UIViewController С дочерними контроллерами вида) и вы хотели бы изменить контроллер вида, ответственный за строку состояния, которую вы должны использовать childViewControllerForStatusBarHidden: собственность. Например:

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

С

- (UIViewController *)childViewControllerForStatusBarHidden {
    return childViewControllers.first; // or viewControllers.first
}

Swift 2

override var childViewControllerForStatusBarHidden() -> UIViewController? {
    return childViewControllers.first // or viewControllers.first
}

Swift 3+

override var childViewControllerForStatusBarHidden: UIViewController? {
    return childViewControllers.first // or viewControllers.first
}

установите контроллер представления контейнера, ответственный за управление строкой состояния

С

- (UIViewController *)childViewControllerForStatusBarHidden {
    return nil;
}

Swift 2

override func childViewControllerForStatusBarHidden() -> UIViewController? {
    return nil
}

Swift 3+

override var childViewControllerForStatusBarHidden: UIViewController? {
    return nil
}

документация: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh

  1. перейти к информации.plist file
  2. наведите курсор на одну из этих строк и появится кнопка (+) и ( -).
  3. Нажмите кнопку Плюс, чтобы добавить новый ключ
  4. тип начните с большой буквы V и автоматически первый выбор будет внешний вид строки состояния на основе контроллера. Добавьте это в качестве ключа.
  5. установите значение "нет"
  6. перейти к вам AppDelegate.m для Objective-C (для быстрого языка: AppDelegate.Свифт)
  7. добавить код внутри метода

Для Цели-C:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [application setStatusBarHidden:YES];

    return YES;
}

Для Swift:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool {
    application.statusBarHidden = true

    return true
}

готово! Запустите приложение и не более строки состояния!

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

"внешний вид строки состояния на основе контроллера" установлен в NO

второй -

"строка состояния изначально скрыта" установите значение да

вы можете добавить эту строку в свою информацию.plist файл, если его там нет. Просто зайдите в проект в Xcode, перейдите в раздел "Информация" и наведите указатель мыши на одну из существующих строк. Должна появиться кнопка"+", позволяющая добавить строку и ввести "внешний вид строки состояния на основе контроллера".

для iOS 10 с Swift 3 Вы должны использовать:

override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}
  1. открытая информация.файл plist
  2. "внешний вид строки состояния на основе контроллера" установлен в NO
  3. "строка состояния изначально скрыта" установите значение да
  4. сделал

нет необходимости писать строку кода...Ура

Если вы используете UIDocumentInteractionController для отображения данных, то вы никогда не скрываете строку состояния, поэтому у меня есть альтернатива этому

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

эта строка меняет цвет содержимого строки состояния на белый