带我飞3iOS点滴iOS 开发技巧大全

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)。虽然也能达到想要的效果,但是感觉这个方法太暴力了,不是很推荐。

差不多就是这些了,应该总有一款是适合你的。还是想再说一下,遇到问题不要搜到答案就感觉万事大吉了,一定要弄清楚到底哪里出了问题。

感谢前进的路上一直有你们,简书上有爱的你们。

上一篇下一篇

猜你喜欢

热点阅读