当我尝试显示视图时无法隐藏状态栏

I am not able to hide statusBar when I try to show a view

我想在屏幕上显示 view 时隐藏 statusBar

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),但其中 none 有效。也不能override prefersStatusBarHidden因为我在UIViewclass.

override var prefersStatusBarHidden: Bool {
    return true
}

注意:请不要标记为重复,因为我已经看到所有其他 答案,但其中 none working.I 不想隐​​藏所有应用程序,仅当它显示视图时才隐藏。

第 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
}

我的建议是创建一个变量:

var isVisible: Bool?

当你想要的 UIView 出现时设置为 true,当它消失时设置为 false。

或者,只需使用 ViewController,并从那里呈现视图 -