UINavigationBar的使用方法

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

效果:


UINavigationBar的使用方法_第1张图片

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。


UINavigationBar的使用方法_第2张图片

在你的ViewController中添加下面的方法

-(UIStatusBarStyle)preferredStatusBarStyle{

return UIStatusBarStyleLightContent;

}

你可能感兴趣的:(UINavigationBar的使用方法)