iOS每个ViewController一个NavigationBar
在日常开发中,我们经常会碰到一些关于导航栏的问题,例如视觉设计,经常性的改变NavigationBar的风格,虽然我们能够在viewwillApper中来进行处理,但是总是太麻烦,而且需要写很多多余的代码,今天就来讲讲这种效果,其实已经有很多APP都是使用这种效果
我们先来看看已经有的一些APP使用的这种效果
这是天猫APP的效果,注意观察他的导航栏
这是网易新闻,注意看导航栏
越来越多的APP采用这种样式来控制导航栏的不同风格,今天我们就来实现这一效果。
这里需要使用到一个第三方库
https://github.com/rickytan/RTRootNavigationController
借助这个库我们能够轻松实现这一效果
新建一个工程,这里我们使用cocoapods来集成这个第三方库
集成RTRootNavigationController
podfile
1 2 3 4 5 6 |
|
使用RTRootNavigationController当做当前的rootController
创建BaseViewController
我这里新建一个BaseViewController 主要是为了引入RTRootNavigationController,当然如果是OC项目的话,可以直接创建一个PCH文件,直接全局引用也行,不过我们一般都会有一个基类的ViewController,在这个基类中,没有做任何操作,只是引用了一个RTRootNavigationController
1 2 3 4 5 |
|
设置根控制器
在Appdelegate中,我们需要将我们的window的rootcontroller设置为RTRootNavigationController
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
在ViewController中,我们需要push出去一个vc的时候,我们需要这样实现
1 2 |
|
看一下效果
设置返回NavigationBar按钮
在当前的vc中,我们设置返回按钮,或者其他的按钮,也很方便
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
多个按钮定义也是很方便的
如果只是需要一个左边的返回按钮,这个按钮需要自定义样式,那么可以直接在当前VC冲下方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
这样的话,就不要去单独设置左上角的返回按钮了
跳到最开始的VC
在我们pop的时候,可以直接pop在栈顶的VC
1 |
|
push到另外一个VC 销毁当前的VC
有时我们想要实现这样一种效果,当当前的VCpush出去过后,希望销毁当前的VC
1 2 3 4 |
|
更改导航栏颜色
之前忘记更改导航栏的颜色了,这里看一下,更改导航栏的颜色,只需要
1 |
|
总结
如果你的APP在导航栏有多种样式的话,你完全可以使用这种方法,使用起来很方便
感谢:
rickyTan开源
https://github.com/rickytan/RTRootNavigationController
项目的源码我放在了:
https://github.com/yangqian111/blog/tree/master/iOS每个VC单独的一个导航栏