iOS StatusBar状态栏文字颜色更改
1、将单个页面的StatusBar文字颜色改为白色,动态更改也可以在这里设置
-(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
2、将所有页面的StatusBar文字颜色改为白色
plist文件中View controller-based status bar appearance 设置为 NO
在这种情况下,将单个页面的文字颜色更改为黑色
-(void)viewWillAppear:(BOOL)animated { [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; } -(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; }
3、scrollView滑动更改StatusBar的文字颜色
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { _offsetY = scrollView.contentOffset.y; [self setNeedsStatusBarAppearanceUpdate]; //更新statusBar颜色,调用preferredStatusBarStyle } - (UIStatusBarStyle)preferredStatusBarStyle { if (_offsetY <= 136) { return UIStatusBarStyleLightContent; } return UIStatusBarStyleDefault; }
4、当以UINavigationController来做容控制器,而且导航栏没有隐藏的情况下,
preferredStatusBarStyle方法是无法改变StatusBar的颜色的,
给UINavigationController写一个类扩展(Catogory)就可以使用上面方法了
@implementation UINavigationController (UIKitAddition) -(UIViewController *)childViewControllerForStatusBarStyle { return self.visibleViewController; } -(UIViewController *)childViewControllerForStatusBarHidden { return self.visibleViewController; } @end
5、以UINavigationController来做容控制器的时候不想写类扩展,也可以用以下方法
//白色 self.navigationController.navigationBar.barStyle = UIBarStyleBlack; //黑色 self.navigationController.navigationBar.barStyle = UIBarStyleDefault;