前言
时常会遇到这样的需求:APP应用大部分页面,会使用统一的导航条样式。但有些特殊情况下需要展示不同的效果。 我们知道在一个导航控制器栈中处理不同的导航条样式是比较繁琐的, 即使能处理结果也达不到预期。 针对这样的需求,最简单的办法就是特殊情况下的页面自定义UINavigationBar
方案
为了还可以使用系统提供的API, 我们自定义的导航条控件还是继承自系统提供的UINavigationBar。 这样我们就保留了可以继续使用系统提供的多种能力,如:设置 leftBarButtonItem, rightBarButtonItem
以及 设置titleView
等。
iOS11适配 导航条向上偏移的问题
iOS11以后,UINavigationBar
结构改变了,需要将UINavigationBarContentView
的 frame进行调整
解决的办法就是在控件的layoutSubview
方法中重置位置