vicki753's iOS 基础 - 状态栏的颜色设置

2020-07-21  本文已影响0人  vicki753

首先了解navBar的style是会影响状态栏颜色的

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
// UIBarStyleDefault 状态栏会显示黑色, UIBarStyleBlack 状态栏显示白色,而且,注意这样的设置,深色模式的动态颜色也是有效果的,UIBarStyleBlack 会显示深色模式的颜色,但可能是系统bug,深色模式后它也不会根据当前是浅色模式而去改变颜色,它会认为你就是需要深色模式self.navigationController.navigationBar.barTintColor = kDEEP_BLUE_COLOR;
kDEEP_BLUE_COLOR 是动态颜色,浅色模式是蓝色,深色模式是深灰色,因为UIBarStyleBlack的设置,在navbar隐藏后,再显示出来的时候它就显示为 深灰色

执行顺序也会影响设置的状态栏颜色

如果是系统的方法先走(黑色),页面的方法后走(白色),就会遵循页面的方法(白色),反之则会相反


Screen Shot 2020-07-21 at 11.30.55 AM.png

这个是app启动后的堆栈 我在BSMyAccountViewController中打了断点,并且发现这个方法调用了好几次

- (UIStatusBarStyle)preferredStatusBarStyle {
      return UIStatusBarStyleLightContent;
}

点击进入这个页面的时候都会执行这个方法 preferredStatusBarStyle,
这个设置比较方便,因为不需要改变其他的代码,但是除非系统的导航栏隐藏了才会有效果

还有一种比较靠谱的设置方法

View controller-based status bar appearance 设置为NO (不要YES,YES就无效了)

上一篇下一篇

猜你喜欢

热点阅读