如何去除导航栏边框/阴影?

18

我有一个导航栏,其中有一条横线,我想把它去掉。

屏幕截图

我已经从截图中删除了导航栏颜色,以使该线更加明显。

我尝试将导航栏的阴影图像属性设置为空白png(1x,2x和3x的1x1像素png),但没有效果。

2个回答

80

这两行代码对我总是非常有效:

 navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    navigationController?.navigationBar.shadowImage = UIImage()

对于Swift3: UINavigationBar.appearance().shadowImage = UIImage() UINavigationBar.appearance().setBackgroundImage(UIImage(named: "img_name"), for: .default) - Lanston
1
我已经为navigationBar设置了barTint和tintColor。在按照您的建议操作后,barTint没有被遵守,而是变回了白色。有什么建议吗? - Rohan Sanap
1
navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 这行代码导致我的navigationBar不遵循barTint。 - Rohan Sanap
1
@Xernox 不,那并没有帮助。上面回答中描述的方法不仅会移除底部阴影,还会使导航栏变得透明。如果想要保留barTintColor并移除底部阴影,请参考这个回答->https://dev59.com/gGIk5IYBdhLWcg3wfOOe#19227158 - Rohan Sanap
@TheRohanSanap,您是在指原始答案还是我的建议?因为我的建议可行且不会使导航栏变成透明颜色。 - Xernox
显示剩余5条评论

24

如果你想要在全局范围内执行它,可以这样做:

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

除了当它过渡到另一个视图控制器时,我的导航栏没有颜色,其他都正常工作。 - Hedylove
1
你会把这个设置在哪里?我猜测是在AppDel中吧?有示例代码吗? - UKDataGeek
2
Swift 4 更新:UINavigationBar.appearance().shadowImage = UIImage() UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default) - user6338195
2
@EdmundElmer iOS 13没有移除阴影。 - Digvijaysinh Gida
这对我一直有效,但是iOS 15似乎需要一个带有内容的图像 - 我更新了使用一个纯色的图像。 - gngrwzrd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接