UINavigation Bar总结

UINavigation Bar
1、概览

Navigation bar本身是一个组织着navigaitn界面的view,由UINavigation controller管理。每个navigation controller都会创建属于自己的navigation Bar来管理自己的navigation bar的内容,一般使用navigation bar,都是通过UINavigation controller来创建、显示及管理。

2、结构
  • 结构:UINavigation Bar也是一个栈结构,存放着UInavigationItem对象,提供展示在navigation bar上的buttons和views,可以将其理解为存放UINavigationItem等对象的容器。前面说到navigation controller管理navigation bar,而navigation bar是一个容器,那么navigation的栈结构和navigation item的栈结构必定是平行。而且每个栈中的controller都有提供了一个navigation item作为navigationItem属性的值。

[外链图片转存中…(img-xTTpPigt-1597398210992)]

​ 图中是在运行时一个navigation bar的关键对象,nabigation bar的owner将这些itetms pus到栈或从栈中pop,为了找到钱一个navigation,navigation bar有一个指针指向选择的对象。这样栈中最顶层的item提供现在在navigaiton bar上显示的内容,维持的指针可以创建一个back按钮。

  • 界面:有三个基本的位置:left、center和right
    • left:通过navigaiton controller获取默认的返回按钮即backBarButtonItem。但是,如果想自定义left button,需要创建UIBarButtonItem分配给leftBarButtonItem
3、使用方式
  • 使用UINavigation Controller来控制navigaiton bar
    • 创建navigaiton controller
    • 使用navigation controller的navigationBar属性设置bar的样式
    • 设置push到navigaiton栈上的UIViewController的title和navigation Item属性控制navigation Bar
  • 使用独立的navigation bar
4、使用场景总结
(1)、UINavigation设置为透明

设置UINavigationItem为clearColor,设置透明度,但是UINavigationItem无法显示,后来通过setBackgroundImage设置成功,但是navigationBar下面有一条线白线,设置navigaitonBar的setShadowImage属性背景图片即可,代码如下:

-(void)viewWillAppear:(BOOL)animated{

[superviewWillAppear:animated];

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

[self.navigationController.navigationBar setShadowImage:[UIImage new]];

}

正如前面介绍的,navigationBar,如果不想影响其他页面的导航透明度,viewWillDisappear将其设置为nil即可:

-(void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

[self.navigationController.navigationBar setShadowImage:nil];

}
1、概览

Navigation bar本身是一个组织着navigaitn界面的view,由UINavigation controller管理。每个navigation controller都会创建属于自己的navigation Bar来管理自己的navigation bar的内容,一般使用navigation bar,都是通过UINavigation controller来创建、显示及管理。

2、结构
  • 结构:UINavigation Bar也是一个栈结构,存放着UInavigationItem对象,提供展示在navigation bar上的buttons和views,可以将其理解为存放UINavigationItem等对象的容器。前面说到navigation controller管理navigation bar,而navigation bar是一个容器,那么navigation的栈结构和navigation item的栈结构必定是平行。而且每个栈中的controller都有提供了一个navigation item作为navigationItem属性的值。

navigation_bar_objects

​ 图中是在运行时一个navigation bar的关键对象,nabigation bar的owner将这些itetms pus到栈或从栈中pop,为了找到钱一个navigation,navigation bar有一个指针指向选择的对象。这样栈中最顶层的item提供现在在navigaiton bar上显示的内容,维持的指针可以创建一个back按钮。

  • 界面:有三个基本的位置:left、center和right
    • left:通过navigaiton controller获取默认的返回按钮即backBarButtonItem。但是,如果想自定义left button,需要创建UIBarButtonItem分配给leftBarButtonItem
3、使用方式
  • 使用UINavigation Controller来控制navigaiton bar
    • 创建navigaiton controller
    • 使用navigation controller的navigationBar属性设置bar的样式
    • 设置push到navigaiton栈上的UIViewController的title和navigation Item属性控制navigation Bar
  • 使用独立的navigation bar
1、UINavigation设置为透明

设置UINavigationItem为clearColor,设置透明度,但是UINavigationItem无法显示,后来通过setBackgroundImage设置成功,但是navigationBar下面有一条线白线,设置navigaitonBar的setShadowImage属性背景图片即可,代码如下:

-(void)viewWillAppear:(BOOL)animated{

[superviewWillAppear:animated];

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

[self.navigationController.navigationBar setShadowImage:[UIImage new]];

}

正如前面介绍的,navigationBar,如果不想影响其他页面的导航透明度,viewWillDisappear将其设置为nil即可:

-(void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

[self.navigationController.navigationBar setShadowImage:nil];

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值