我使用以下代码行来隐藏状态栏:
view.window?.windowLevel = UIWindowLevelStatusBar
令我感到惊讶的是,这行代码不能在任何生命周期内工作。 view
的方法:viewDidLoad()
,viewWillAppear(:)
。但是,当我创建一个按钮并将其连接到一个动作方法时,上面的代码完美地工作并隐藏窗口后面的状态栏。我希望能够在view.window?.windowLevel = UIWindowLevelStatusBar
中致电viewDidLoad()
。任何人都可以帮助我理解为什么它不能在上面提到的view
"生命周期"方法
答案 0 :(得分:1)
在viewDidLoad
和viewWillAppear
中,视图控制器都不在视图层次结构中,因此view.window
为nil
。
您可以使用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]