iOS状态栏中的坑

2019-02-02  本文已影响2人  lanmoyingsheng

设置状态栏样式的一般有两种方式。
info.plist中有View controller-based status bar appearance字段,翻译为基于视图控制器的状态栏样式。

一、设置View controller-based status bar appearance为YES。
即在控制器中配置状态栏的的样式。例如:

override func prefersStatusBarHidden() -> Bool {
    return true/false
}
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent/.default
}

二、设置View controller-based status bar appearance为NO。
即需要直接配置状态栏样式。例如:

UIApplication.shared.statusBarStyle = .lightContent/.default
UIApplication.shared.isStatusBarHidden = true/false

个人认为第二种方法,可以在任意地方调用,较为灵活,使用更多。

第一种方式可能是第二种的变种,因为在第一种方式中,完全可以把一个变量作为返回值,在需要时,修改这个返回值,并调用setNeedsStatusBarAppearanceUpdate刷新。

func action() {
    _barHidden = false
    _barStyle = .lightContent
    setNeedsStatusBarAppearanceUpdate() // 通知系统做一个标记,在下一次runloop循环中需要修改状态栏样式。
}

override func prefersStatusBarHidden() -> Bool {
    return _barHidden
}
override var preferredStatusBarStyle: UIStatusBarStyle {
    return _barStyle
}

我觉得这种还不如直接第二种方式,直接修改状态栏样式。

上一篇下一篇

猜你喜欢

热点阅读