Скрыть строку состояния в приложении iOS 8
Я пробовал
[[UIApplication sharedApplication] setStatusBarHidden:YES];
этого ничего не делает.
и я заглянул в свой Info.plist
файл для "вид контроллера на основе внешнего вида строки состояния", но его там нет.
Как я могу скрыть панель состояния в верхней части экрана (с часами и зарядом батареи) внутри моего приложения в Xcode 6? Спасибо!
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
- перейти к информации.plist file
- наведите курсор на одну из этих строк и появится кнопка (+) и ( -).
- Нажмите кнопку Плюс, чтобы добавить новый ключ
- тип начните с большой буквы V и автоматически первый выбор будет внешний вид строки состояния на основе контроллера. Добавьте это в качестве ключа.
- установите значение "нет"
- перейти к вам AppDelegate.m для Objective-C (для быстрого языка: AppDelegate.Свифт)
- добавить код внутри метода
Для Цели-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 } }
- открытая информация.файл plist
- "внешний вид строки состояния на основе контроллера" установлен в NO
- "строка состояния изначально скрыта" установите значение да
- сделал
нет необходимости писать строку кода...Ура
Если вы используете UIDocumentInteractionController для отображения данных, то вы никогда не скрываете строку состояния, поэтому у меня есть альтернатива этому
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
эта строка меняет цвет содержимого строки состояния на белый