1.UIStatusBarStyleDefault 默认是黑色 UIStatusBarStyleLightContent (Light content)是白色
2.如果app的导航条的文字颜色是统一的黑色,iOS status文字颜色是黑色,不需要添加任何代码和设置。
如果app导航条需求改成白色需要设置View controller-based status bar appearance = NO ,还需要appdelegate里面设置
代码[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent(苹果推荐使用重写viewcontroller来修改设置导航条的颜色)
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
2-1:
如果想将状态栏和导航栏字体全变为白色,这样就行
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
plist 是默认可不添加/View controller-based status bar appearance = YES
3.如果app viewcontroller页面导航条文字颜色不一样,就需要使用viewcontroller自己来控制每一个页面的颜色黑色还是白色
默认是View controller-based status bar appearance = YES 如果设置NO viewController 重写方法是不会执行的。相反设置称YES 会执行页面重写方法。
4.如果uinavigation是rootview 需要navigation去重写方法,有时我们的当前显示的UIViewController可能有多个childViewController,重写当前UIViewController的childViewControllerForStatusBarStyle方法,让childViewController的preferredStatusBarStyle生效(当前UIViewController的preferredStatusBarStyle就不会被调用了)。
5.setTintColor和setBarTintColor . ios7.0之后 please use -barTintColor.
6.设置导航条和状态条看起来是一体的背景。
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image01"] forBarMetrics:UIBarMetricsDefault];
如果设置了这个看起来一体的背景,就不能更改状态栏的背景了。
7.UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, self.view.bounds.size.width, 20)];
statusBarView.backgroundColor = [UIColor greenColor];
[self.navigationController.navigationBar addSubview:statusBarView];
这里是更改状态栏的颜色
8.看起来是透明的可以这么写,下面是一个viewcontroller的背景图。navigationbar设置一个nil image
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]
self.navigationController.navigationBar.shadowImage = [UIImage new];
参考链接:
http://blog.csdn.net/wangqiuwei07/article/details/53220702
http://blog.csdn.net/u011118092/article/details/54907323
http://doc.okbase.net/shede333/archive/94517.html
http://www.jianshu.com/p/63f758796438