NavigaitonBar是导航栏,位于屏幕的上方,管理整个NavigationController的navigationItem
1.设置标题:
//创建一个导航控制器
UINavigationController *rootNavigationController = [[UINavigationController alloc] init];
UIViewController *vc2=[[UIViewController alloc]init];
vc2.view.backgroundColor=[UIColor blueColor];
vc2.navigationItem.title=@"蓝色";
2.设置导航背景色:
UIViewController *vc3=[[UIViewController alloc]init];
vc3.view.backgroundColor=[UIColor yellowColor];
//设置导航栏的颜色,由于三个页面使用同一个导航栏,颜色统一被修改
vc3.navigationController.navigationBar.barTintColor=[UIColor grayColor];
barTintColor: 这个属性需要在iOS7以上才可以使用; 如果要支持iOS6以及以下的系统,可以参考这篇文章:UINavigationBar Background Color
效果:
3.设置导航背景
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Background"]forBarMetrics:UIBarMetricsDefault];
在这里得稍微说说UIBarMetrics这个枚举, 它主要是用来控制在不同状态下导航栏的显示。和UIButton的
- (void)setBackgroundImage:(nullable UIImage *)image forState:(UIControlState)state 这个方法有点类似。
//表示横屏竖屏都显示
UIBarMetricsDefault,
//表示在只横屏下才显示,和UIBarMetricsLandscapePhone功效一样,不过iOS8已经弃用了
UIBarMetricsCompact,
UIBarMetricsDefaultPrompt和UIBarMetricsCompactPrompt这两个我还没搞清楚是什么意思,有知道的朋友不妨给我们来普及一下。。
4.设置状态栏的颜色(字体颜色)
从效果图可以看出,我们设置背景色或者背景图之后,状态栏依然还是默认的黑色,这样感觉不好看。好在,系统给我们提供了UIStatusBarStyleDefault和UIStatusBarStyleLightContent两种样式供我们选择。
UIStatusBarStyleDefault,系统的默认样式,黑色内容,用于浅色的背景(如白色)
UIStatusBarStyleLightContent 白色内容,用于深色的背景(如红色)
下面来看看具体怎么实现,主流的实现方式是分两步:
在工程的Info.plist文件中添加一行UIViewControllerBasedStatusBarAppearance,选择Boolean类型,并设置为YES,Xcode会自动把名称变为View controller-based status bar appearance。
在你的ViewController中添加下面的方法
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}