如何隐藏UINavigationBar 1 px底线

如何隐藏UINavigationBar 1 px底线

我有一个应用程序,有时需要它的导航栏,以融入内容。

有人知道如何摆脱或改变这个讨厌的小酒吧的颜色吗?

在下面的图片中,我说的是“根视图控制器”下面的1 px高度线。


HUWWW
浏览 723回答 3
3回答

qq_遁去的一_1

要做到这一点,您应该设置一个自定义阴影图像。但是要显示阴影图像,还需要设置一个自定义背景图像,引用Apple的文档:对于要显示的自定义阴影图像,还必须使用setBackoundImage(_:for:)方法设置自定义背景图像。如果使用默认背景图像,则不管此属性的值如何,都将使用默认阴影图像。因此:let&nbsp;navigationBar&nbsp;=&nbsp;navigationController!.navigationBar navigationBar.setBackgroundImage(#imageLiteral(resourceName:&nbsp;"BarBackground"), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for:&nbsp;.default)navigationBar.shadowImage&nbsp;=&nbsp;UIImage()以上是唯一的“官方”方式来隐藏它。不幸的是,它消除了酒吧的半透明。我不想要背景图像,只想要颜色你有这样的选择:纯色,无半透明:navigationBar.barTintColor&nbsp;=&nbsp;UIColor.redColor()navigationBar.isTranslucent&nbsp;=&nbsp;falsenavigationBar.setBackgroundImage(UIImage(),&nbsp; for:&nbsp;.default)navigationBar.shadowImage&nbsp;=&nbsp;UIImage()创建充满颜色的小背景图像并使用它。使用下面描述的‘hacky’方法。它还将保持酒吧半透明。如何保持酒吧的半透明?为了保持半透明,你需要另一种方法,它看起来像一个黑客,但工作良好。我们要去除的阴影是一条发际线UIImageView在下面的某个地方UINavigationBar..我们可以找到它,并在需要时隐藏/展示它。下面的说明假设您需要只隐藏在您的一个控制器中的发际线。UINavigationController等级制度。声明实例变量:private&nbsp;var&nbsp;shadowImageView:&nbsp;UIImageView?查找此阴影(发际线)的Add方法UIImageView:private&nbsp;func&nbsp;findShadowImage(under&nbsp;view:&nbsp;UIView)&nbsp;->&nbsp;UIImageView?&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;view&nbsp;is&nbsp;UIImageView&nbsp;&&&nbsp;view.bounds.size.height&nbsp;<=&nbsp;1&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(view&nbsp;as!&nbsp;UIImageView) &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;subview&nbsp;in&nbsp;view.subviews&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;let&nbsp;imageView&nbsp;=&nbsp;findShadowImage(under:&nbsp;subview)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;imageView&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;nil}添加/编辑viewWillAppear/viewWillDisappear方法:override&nbsp;func&nbsp;viewWillAppear(_&nbsp;animated:&nbsp;Bool)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super.viewWillAppear(animated) &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;shadowImageView&nbsp;==&nbsp;nil&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shadowImageView&nbsp;=&nbsp;findShadowImage(under:&nbsp;navigationController!.navigationBar) &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;shadowImageView?.isHidden&nbsp;=&nbsp;true}override&nbsp;func&nbsp;viewWillDisappear(_&nbsp;animated:&nbsp;Bool)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super.viewWillDisappear(animated) &nbsp;&nbsp;&nbsp;&nbsp;shadowImageView?.isHidden&nbsp;=&nbsp;false}同样的方法也适用于UISearchBar发际线,(几乎)任何你需要隐藏的东西:)非常感谢“狮子座娜丹”这个创意!

冉冉说

如果您只想使用坚实的导航栏颜色,并在您的故事板中设置了此颜色,请在您的AppDelegate类以通过外观代理删除1像素边框:[[UINavigationBar&nbsp;appearance]&nbsp;setBackgroundImage:[[UIImage&nbsp;alloc]&nbsp;init] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forBarPosition:UIBarPositionAny &nbsp;&nbsp;barMetrics:UIBarMetricsDefault];[[UINavigationBar&nbsp;appearance]&nbsp;setShadowImage:[[UIImage&nbsp;alloc]&nbsp;init]];
打开App,查看更多内容
随时随地看视频慕课网APP