重修笔记之UINavigationBar

作者: iOS_July | 来源:发表于2018-03-01 14:43 被阅读8次

一、导航栏外观

外观 属性
bar的样式 barStyle
bar的透明度 translucent
bar的颜色 barTintColor
bar上控件的颜色 tintColor
bar的背景图片 backgroundImage

二、导航栏内容

内容 属性
标题 title
标题视图 titleView
左侧按钮 leftBarButtonItem
右侧按钮 rightBarButtonItem
返回按钮 backBarButtonItem
返回按钮指示图像 backIndicatorImage
返回按钮遮罩图像 backIndicatorTransitionMaskImage

第三、效果显示

  • 给viewController添加一个导航栏,默认效果如下:


    默认效果.png
  • 默认添加一个子视图
-(void)test1{
    //默认样式
    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
    //默认透明度为透明[此时添加的控件frame从屏幕最上方开始算起]
    self.navigationController.navigationBar.translucent = YES;
    
    UIView * showView = [[UIView alloc]initWithFrame:CGRectMake(100, 0, 200, 200)];
    showView.backgroundColor = [UIColor purpleColor];
    [self.view addSubview:showView];
}
默认添加效果.png

  • 透明度为不透明
//设置导航栏的barStyle和translucent
-(void)test2{
    //默认样式
    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
    //透明度为不透明[此时添加的控件frame从导航栏下面开始算起]
    self.navigationController.navigationBar.translucent = NO;
    
    UIView * showView = [[UIView alloc]initWithFrame:CGRectMake(100, 0, 200, 200)];
    showView.backgroundColor = [UIColor purpleColor];
    [self.view addSubview:showView];
   
}
不透明.png
  • edgesForExtendedLayout
self.edgesForExtendedLayout = UIRectEdgeNone;
透明2.png

第四、导航栏的颜色设置:barTintColor

self.navigationController.navigationBar.barTintColor = [UIColor purpleColor];
bar颜色.png

第五、导航栏的控件颜色设置[默认为蓝色]tintColor

self.navigationController.navigationBar.tintColor = [UIColor redColor];

第六、设置背景图片背景图片不同的size会展示不同的效果

backgroundImage 
64像素时,会包含状态栏
44像素时,只包含导航栏 
小于44时,会叠满状态栏和导航栏
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"图片名"] forBarMetrics:UIBarMetricsDefault];

第七、UIBarButtonItem

  • 初始化的变化
1、initWithBarButtonSystemItem: target:  action: 
系统提供样式改变  

UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward target:self action:@selector(pushNextController)];
self.navigationItem.rightBarButtonItem = right;

-(void)pushNextController{
    SecondViewController * secondVc = [[SecondViewController alloc]init];
    [self.navigationController pushViewController:secondVc animated:YES];
}
初始化一.png
2、initWithTitle: style: target: action: 
style设置为UIBarButtonItemStylePlain 

//使用title初始化,style不能使用边框类型   
UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithTitle:@"Right" style:UIBarButtonItemStylePlain target:self action:@selector(pushNextController)];
self.navigationItem.rightBarButtonItem = right;
初始化二.png
3、initWithImage: style: target: action: 
图像需要进行渲染,默认渲染成模版  

//默认---渲染为模版时
UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@""] style:UIBarButtonItemStylePlain target:self action:@selector(pushNextController)];

//渲染为原图
UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithImage:[[UIImage imageNamed:@""] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStylePlain target:self action:@selector(pushNextController)];

第八、设置title和titleView

//设置title
self.navigationItem.title = @"title";
设置titleView
self.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];
titleView.png
//导航栏的控件颜色设置[默认为蓝色]
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

self.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];
titleView2.png

第九、导航栏设置backBarButtonItem

  • 没有title,默认显示back
  • 设置title,显示title的内容

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"回去" style:UIBarButtonItemStylePlain target:nil action:nil];

back.png

补充

导航栏中设置控件的image对象都需要进行渲染设置
默认是渲染为模版,需要渲染为原图才能正常显示。

相关文章

  • 重修笔记之UINavigationBar

    一、导航栏外观 二、导航栏内容 第三、效果显示 给viewController添加一个导航栏,默认效果如下:默认效...

  • 重修笔记之字典

    NSDictionaryNSMutableDictionary 一、创建字典 即 即 快速创建 二、键值对的个数 ...

  • 重修笔记之数组

    NSArray :不可变数组NSMutableArray :可变数组 一、创建 二、元素个数 arr.count ...

  • 重修笔记之Protocol

    基本用途 可以用来声明很多方法不能声明成员变量,只有.h文件 只要某个类遵守了这个协议,就相当于拥有了这个协议中的...

  • 重修笔记之Block

    相信大家都明白 block 的重要性是毋庸置疑的,它本身封装了一段代码并将这段代码当做变量,通过 block...

  • 重修笔记之UILabel

    UILabel------基础控件 显示的文本只读,无法编辑,可以根据文字个数自动换行 一、定义UILabel +...

  • UINavigationBar笔记

    UINavigationBar是一个bar,一般在窗口的顶部显示,包含多个按钮,用于在屏幕层次结构中起导航作用。 ...

  • iOS导航栏下面线的隐藏和换色

    UINavigationBar *navBar = [UINavigationBar appearance]; /...

  • 设置navigationbar颜色

    UINavigationBar *bar = [UINavigationBar appearance]; //设...

  • 导航栏设置透明失效

    UINavigationBar *appearance = [UINavigationBar appearance...

网友评论

    本文标题:重修笔记之UINavigationBar

    本文链接:https://www.haomeiwen.com/subject/tqsixftx.html