为什么我不能隐藏状态栏?

时间:2017-05-22 13:51:43

标签: ios swift

我使用以下代码行来隐藏状态栏:

view.window?.windowLevel = UIWindowLevelStatusBar

令我感到惊讶的是,这行代码不能在任何生命周期内工作。 view的方法:viewDidLoad()viewWillAppear(:)。但是,当我创建一个按钮并将其连接到一个动作方法时,上面的代码完美地工作并隐藏窗口后面的状态栏。我希望能够在view.window?.windowLevel = UIWindowLevelStatusBar中致电viewDidLoad()。任何人都可以帮助我理解为什么它不能在上面提到的view"生命周期"方法

3 个答案:

答案 0 :(得分:1)

viewDidLoadviewWillAppear中,视图控制器都不在视图层次结构中,因此view.windownil

您可以使用viewDidAppear解决此问题,或使用UIApplication.shared.delegate.window访问该窗口。

一般来说,更改主窗口的level并不是一个好主意。

答案 1 :(得分:0)

如果在info.plist中将View controller-based status bar appearance设置为YES,您的ViewController将只能调整状态栏。否则,它由plist或proj文件中的全局参数设置。

答案 2 :(得分:0)

如果您只想隐藏状态栏,请使用:

    [[UIApplication sharedApplication] setStatusBarHidden:YES]