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;

 

posted @ 2018-07-26 16:57  南风知我意、  阅读(1568)  评论(0编辑  收藏  举报