背景:App导航条上的按钮都是自定义的,很诡异的是在自动Push过程中导航条蓝色返回按钮一闪而过,退出页面点击进入一切又都正常。
平时都是天天忙着写业务,对技术没有特别深的研究,要学习学习。。。
先看看API点到UINavigationItem里仔细一看,backBarButtonItem这个熟悉的属性出现了,想起来这个属性很早以前都用过,我们为什么不把自定义的按钮放到backBarButtonItem而是放到leftBarButtonItems上呢?
思考了片刻,backBarButtonItem是系统自带苹果自己在用,哪天苹果升级改一改,我们之前写的代码不生效了,那就凉凉了,说白了就是它存在着不可控性。
遇到问题就解决问题,开始我在想猜想是因为我的自定义按钮的代码放到了viewDidLoad的方法里,而这个方法是在导航条渲染之后才执行的??
那我们就放在loadView里提前一步,实践后无效,问题还是存在,再查了查API看到leftItemsSupplementBackButton这个属性,实践得出它为YES时系统按钮是一直展示的,NO时会被leftBarButtonItems所覆盖,还是没有解决我们的问题。
那我们初始化一个空的按钮返回赋值给backBarButtonItem。
navigationItem.backBarButtonItem = UIBarButtonItem()
蓝色文字消失了,但蓝色的返回箭头还在,百度了一下解决方案如下:
navigationBar.backIndicatorImage = UIImage()
navigationBar.backIndicatorTransitionMaskImage = UIImage()
思路就是先干返回文字,再把蓝色的箭头换成透明的或着没有图片。
网友评论