仿QQ空间滑动返回渐变导航栏

很遗憾, 只有iOS10才管用, 心累. 果然黑科技不靠谱.(17-10-26)

很久之前就开始打QQ的导航栏的主意, 这大概是我心中最完美的导航栏了. 百度过N多次也并没有找到相关的实现. QQ导航栏效果如下:

仿QQ空间滑动返回渐变导航栏_第1张图片
QQ导航栏.PNG

仔细观察的话, UINavigationBar上面的titleView也是可以渐变的, 所以我想或许可以在原生的导航栏的基础上做修改可以实现这样的效果.

经过艰苦奋斗最终实现效果如下:


最终实现效果.gif

不仅可以渐变, 而且每一个viewController的导航栏都可以单独设置颜色. 仔细观察的话会发现原生导航栏和QQ的导航栏在titleView和返回按钮的处理上是不一样的, 我也是做出这个之后才发现, 所以结论就是: QQ的导航栏是自定义的_.

关于我的实现方法并有什么可讲的, 只是仔细研(cai)究(ce) 原生导航栏的组成以及层次, 上天保佑, 刚好有我需要的并且成功找到了. 简单来说就是黑科技. 比如这样的代码:

if ([view2 isKindOfClass:NSClassFromString(@"_UIVisualEffectBackdropView")]) {
   view2.hidden = true;
}

这种依赖不稳定细节的方法完全不值得学习, 鬼知道苹果工程师哪天不开心会悄悄给navigationBar那些没有暴露的子view换一个类名.

所以写这个文章其实就是想告诉大家: 我™的做出来啦!!!

最后是最最重要的代码: https://github.com/Yanyinghenmei/GradientNavigationBar

你可能感兴趣的:(仿QQ空间滑动返回渐变导航栏)