前言:
• 前景部分:就是指的显示电池、时间等部分;
• 背景部分:就是显示黑色或者图片的背景部分;
1.前景部分:在某一个 ViewController 里面任意切换
1️⃣首先去 Info.plist 里面,把 UIViewControllerBasedStatusBarAppearance 设置为 NO;
2️⃣在你想要改变状态栏颜色的任何地方,写下面这行代码;
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;(黑色)
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;(白色)
2.滑动触发
iOS-滑动改变状态栏颜色_腾讯视频
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
[self setNeedsStatusBarAppearanceUpdate];
}
-(UIStatusBarStyle)preferredStatusBarStyle {
if (contentOffsety > 44.0) {
return UIStatusBarStyleDefault; //黑色
}else {
return UIStatusBarStyleLightContent; //白色
}
}
3.背景部分
背景部分,简单来说,就是背景色;改变方法有两种:
系统提供的方法
navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色
注意:一旦你设置了navigationBar的- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics接口,那么上面的setBarTintColor接口就不能改变statusBar的背景色,statusBar的背景色就会变成纯黑色。
另辟蹊径
创建一个UIView,
设置该UIView的frame.size 和statusBar大小一样,
设置该UIView的frame.origin 为{0,-20},
设置该UIView的背景色为你希望的statusBar的颜色,
在navigationBar上addSubView该UIView即可。
refer: