尝试显示视图时,我无法隐藏statusBar

时间:2018-08-27 10:25:56

标签: swift ios-statusbar

当我在屏幕上显示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隐藏statusBar。并且UIApplication.shared.setStatusBarHidden(true, with: .fade),但这些都不起作用。也不能override prefersStatusBarHidden,因为我在UIView课上。

override var prefersStatusBarHidden: Bool {
    return true
}

注意:请不要将其标记为重复项,因为我看过所有其他内容  答案,但没有一个起作用。我不想为所有应用程序隐藏,仅当它显示视图时。

2 个答案:

答案 0 :(得分:1)

步骤1:在Info.plist文件中        单击加号按钮以添加新密钥View controller-based status bar appearance        将VALUE设置为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
}

答案 1 :(得分:0)

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

var isVisible: Bool?

在所需的UIView出现时将其设置为true,在消失时将其设置为false。

或者,只需使用ViewController,然后从那里显示视图-