美文网首页带我飞3iOS点滴iOS 开发技巧大全
iOS 隐藏导航栏UINavigationBar黑线

iOS 隐藏导航栏UINavigationBar黑线

作者: Two_Seven | 来源:发表于2015-11-08 23:32 被阅读12670次

要解决问题,首先要知道问题发生在哪里,这个问题是当初刚工作在项目过阶段评审的时候被设计提出来的,他说你看这导航栏下面怎么会有一像素的黑线,当时真的是愣住了,甚至认为这是一个苹果的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)。虽然也能达到想要的效果,但是感觉这个方法太暴力了,不是很推荐。

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

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

相关文章

网友评论

  • 取瓢祸水饮:隐藏后怎么恢复这条黑线
    纳兰若水:iPhoneX 上面的刘海整块会变黑。。。。
    生气龙:@HeminWon override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    navigationController?.navigationBar.subviews[0].subviews[1].isHidden = true
    }

    override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.navigationBar.subviews[0].subviews[1].isHidden = false
    }
    HeminWon:同问第一种方法怎么恢复
  • ylgwhyh:为什么用了上面的方法会使控制器中的控件的高度下移64个单位呢?
  • e6e1e6e274b7:跟tabbar一样。tabbar上面也有一条1像素的黑线,位置y = 0.5。
  • 8ae158dda3f2:…mark
  • 我就是个伪程序媛:Hello,我有一个问题,当时我们的设计在看到导航栏下面的那个线觉得比较粗,想换个细一点的,我当时采用的是遍历然后替换image的貌似不可以,具体后来实现的我也忘记了,请问你有更好的方法吗?
  • waylen:补充一下,在 iOS 7 或者更新的系统中,需要保证` [UINavigationBar appearance].translucent = NO`,否则状态栏会完全透明。
    柚子皮肤:@贫僧只用海飞丝 同问
    贫僧只用海飞丝:@waylen 我设置了这个以后,怎么导航栏下面一大块白色的

本文标题:iOS 隐藏导航栏UINavigationBar黑线

本文链接:https://www.haomeiwen.com/subject/lzochttx.html