Я не могу скрыть статусбар, когда пытаюсь показать вид - PullRequest
0 голосов
/ 27 августа 2018

Я хочу скрыть statusBar, когда я показываю view на экране.

func showView() {

    if let keyWindow = UIApplication.shared.keyWindow{
        let view = UIView(frame: keyWindow.frame)
        view.backgroundColor = UIColor.black
        keyWindow.addSubview(view)

        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
            view.frame = keyWindow.frame
        }) { (completedAnimnation) in
            //hide status bar when view is showed
            UIApplication.shared.isStatusBarHidden = true
        }
    }

}

Это код, который я показываю на экране и пытаюсь скрыть строку состояния, используя: UIApplication.shared.isStatusBarHidden = true. а также UIApplication.shared.setStatusBarHidden(true, with: .fade), но ничего из этого не работает. Также не могу override prefersStatusBarHidden, потому что я учусь на UIView классе.

override var prefersStatusBarHidden: Bool {
    return true
}

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

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Я бы предложил создать переменную:

var isVisible: Bool?

Установите значение true, когда появится нужный вам UIView, и false, если оно исчезнет.

В качестве альтернативы, просто используйте ViewController,и представить вид оттуда -

0 голосов
/ 27 августа 2018

шаг 1: В файле Info.plist Нажмите кнопку «плюс», чтобы добавить новый ключ View controller-based status bar appearance Установите ЗНАЧЕНИЕ на NO

шаг 2: Для скрытия на одном экране

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    UIApplication.shared.isStatusBarHidden = true
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    UIApplication.shared.isStatusBarHidden = false
}

шаг 3: Для скрытия во всем приложении AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
    application.statusBarHidden = true
    return true
}
...