Я хотел бы удалить строку состояния в верхней части экрана.
Это не работает:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
Я также попробовал:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var controller = UIViewController()
application.statusBarHidden = true
controller.setNeedsStatusBarAppearanceUpdate()
var view = UIView(frame: CGRectMake(0, 0, 320, 568))
view.backgroundColor = UIColor.redColor()
controller.view = view
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "Hello World"
controller.view.addSubview(label)
self.window!.rootViewController = controller
self.window!.makeKeyAndVisible()
return true
}
Ответы:
Вы действительно должны реализовать prefersStatusBarHidden на своих контроллерах представления:
Свифт 3 и позже
источник
Добавьте код внутри метода
СДЕЛАНО! Запустите ваше приложение и больше нет строки состояния!
источник
Свифт 3
В
Info.plist
набореView controller-based status bar appearance
кNO
И позвонить
UIApplication.shared.isStatusBarHidden = true
источник
Если вы хотите , чтобы скрыть и вернуть строку состояния на кнопку кране , в то время представления и увольнений выдвижного меню , всплывающие окна т. Д. Вы можете использовать этот метод: -
Чтобы скрыть строку состояния: -
Чтобы вернуть строку состояния: -
источник
prefersStatusBarHidden
свойство, как уже упоминалось.prefersStatusBarHidden
том, что представления, привязанные к строке состояния с помощью ограничений, а также панели навигации, будут плохо перемещаться, если вы включаете / выключаете строку состояния с помощьюprefersStatusBarHidden
. На данный момент только этот ответ, кажется, работает вокруг этого.prefersStatusBarHidden
испортит ваше ограничение. Пока это делает работу. Однако я использую небольшую обертку, чтобы избежать использования синглетонов, вы можете найти ее здесьесли вы предпочитаете визуальный подход, а не кодирование, используйте этот метод: в вашем
info.plist
просто добавьте
View controller-based status bar appearance
кNO
и
Status bar is initially hidden
какYES
источник
источник
Обновление для iOS 10 / Swift 3.0
Больше не функция, теперь свойство ...
источник
get { }
если у вас нетset
, просто напишитеreturn true
в Swift 3.x:
источник
Перейдите в ваш Info.plist и добавьте два ключа:
источник
Так что проблема здесь на самом деле не имеет ничего общего со Swift, а только с тем, как обрабатывается внешний вид строки состояния в iOS 7.
По умолчанию контроллеры представления индивидуально управляют внешним видом строки состояния, когда они находятся на экране. Если вы хотите использовать этот метод управления строкой состояния, вы можете переопределить следующие методы для любых контроллеров представления, для которых вы хотите изменить внешний вид:
prefersStatusBarHidden
,preferredStatusBarStyle
,preferredStatusBarAnimation
,В вашем случае вы бы просто внедрили
prefersStatusBarHidden
и вернулиtrue
.Другой способ - контролировать внешний вид строки состояния на уровне приложения. Похоже, это то, что вы на самом деле пытаетесь сделать (установив
application.statusBarHidden
).Чтобы сделать это, вам нужно открыть
Info.plist
файл вашего приложения, добавить ключUIViewControllerBasedStatusBarAppearance
и присвоить ему значениеNO
.источник
Я на самом деле понял это сам. Я добавлю свое решение в качестве другого варианта.
источник
Итак, это стало проблемой для меня, так как iOS 9 не поддерживает вышеупомянутый метод, который упоминали здесь, например,
UIApplication.sharedApplication().statusBarHidden = true
илии
работает, но не предоставляет программируемое решение, где я могу изменить состояние. (
statusBarHidden = true
иstatusBarHidden = false
как мы сделали раньше).Решение этого безумия:
Добавив
prefersStatusBarHidden()
понравившийся ниже, вы можете программно управлять скрытием и отображением строки состояния, не добавляяUIViewControllerBasedStatusBarAppearance
настройки в ваш info.plist :затем используйте это в коде:
ИЛИ
источник
prefersStatusBarHidden
ли смысл звонить? Я предполагаю, что вы имеете в видуself.setNeedsStatusBarAppearanceUpdate()
послеshowStatusBar
назначенияПросто добавьте, что при переопределении
prefersStatusBarHidden
метода или переменнойView controller-based status bar appearance
в Info.plist должно быть значение YES, иначе переопределение не будет иметь никакого эффектаисточник
в Swift 4.2 это свойство сейчас.
источник
В моем случае я искал строку состояния, чтобы скрыть / показать по требованию; а не только когда представление загружается или исчезает.
Swift 3.x
источник
Swift 5: в главном контроллере представления или главном навигационном контроллере, если у вас есть,
И «Просмотр внешнего вида строки состояния на основе контроллера» в plist должен быть ДА, в противном случае приведенный выше код вызываться не будет.
Если вы хотите скрыть строку состояния при запуске приложения, «строка состояния изначально скрыта» в plist должно быть ДА. Это может предотвратить искажение начального изображения при отображении дополнительной синей полосы в верхней части экрана.
источник
Решение, которое работает для меня; если вы хотите скрыть строку состояния на определенном контроллере представления во время загрузки:
Внимание: если вы установили ключ « Просмотр внешнего вида строки состояния на контроллере » на « NO » в вашем info.plist, приведенный выше код не будет работать. Вы должны установить ключ на « ДА » или удалить его из info.plist
источник
В вашем проекте Общие-> Информация о развертывании-> Стиль строки состояния установите флажок Скрыть строку состояния. Примечание: - она скрывает строку состояния во всем приложении.
источник
Для Swift 4+ попробуйте следующий код (проверено на Swift 4.0, 4.1 - IOS 10, 11):
источник
Свифт 5+
В моем случае мне нужно обновить скрытую строку состояния в зависимости от некоторых условий.
Из-за этого я создаю базовый контроллер,
BaseViewController
который содержит новое свойствоhideStatusBar
.Другие контроллеры представления являются подклассом этого базового контроллера. Наконец, когда я хочу обновить поведение строки состояния, мне нужно только изменить это
hideStatusBar
значение.Как пользоваться
демонстрация
Вот демо, я использую,
UIView.animate(...)
чтобы сделать переход более плавным.источник
Я использую Xcode 8.1 (8B62) с целью развертывания, установленной на 10.1, и мне не особо повезло с опциями переопределения, упомянутыми выше. Однако проверка опции «Скрыть строку состояния» в информации о развертывании сделала меня.
Проект> Общее
Надеюсь, это поможет.
источник
Если вы представляете контроллер представления модально, попробуйте
источник
источник
Вы можете использовать этот код в своем
ViewController
Class
scope
источник
В вашем проекте-> Общие-> Информация о развертывании
Стиль строки состояния: -
только что пометил Скрыть строку состояния (iOS 10)
источник
Swift 4
источник
Обновлено для iOS 13 и Swift 5
Если ни один из приведенных выше ответов не работает для вас. Проверьте свой список, чтобы увидеть, есть ли у вас это:
«Просмотр внешнего вида строки состояния на основе контроллера»
Если это так, обязательно установите его в ДА !!!!!
Тогда следующий код будет работать.
источник