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;
