iOS 隐藏导航栏UINavigationBar黑线
2015-11-08 本文已影响12670人
Two_Seven
要解决问题,首先要知道问题发生在哪里,这个问题是当初刚工作在项目过阶段评审的时候被设计提出来的,他说你看这导航栏下面怎么会有一像素的黑线,当时真的是愣住了,甚至认为这是一个苹果的bug。现在想想真的好幼稚。
首先我们看一下苹果官方给出的解释:
2E04731A-B0C8-4341-9B1D-D8FBB09B6484.png
现在让我这个英语半吊子来翻译一下,他的意思就是说如果你不调用这个方法设置一张背景图片的话,那我就给你默认一张,然后同时还有一张阴影图片被默认设置上去,好吧,这就是导航栏上1px黑线的由来,没错,就是这个苹果赠送的shadowImage。
B6D352EE-F0C8-402C-B797-23405F232869.png
相信看到这个解释即使不继续说下去有些同学也知道解决办法了吧,没错嘛,你就用上面说的那个方法,给设置一张背景图片,然后在设置一张shadowImage就可以了,就像这样:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
为了一劳永逸,我把他写在AppDelegate里面了。
下一个解决办法,将UINavigationBar的clipsToBounds属性设成YES就好啦,从此黑线去无踪。
最后一个办法,就是循环遍历一下UINavigationBar的所有子视图,发现有UIImageView类型的视图就remove掉,或者设成隐藏状态(hidden)。虽然也能达到想要的效果,但是感觉这个方法太暴力了,不是很推荐。
差不多就是这些了,应该总有一款是适合你的。还是想再说一下,遇到问题不要搜到答案就感觉万事大吉了,一定要弄清楚到底哪里出了问题。
感谢前进的路上一直有你们,简书上有爱的你们。