当前位置:  开发笔记 > IOS > 正文

如何使UINavigationBar背景透明?

如何解决《如何使UINavigationBar背景透明?》经验,为你挑选了3个好方法。

首先,我已经看到了如何在IOS 8中制作UINavigationBar透明的 所有答案?透明UINavigationBar和Make UINavigationBar透明.

他们似乎并不适合我.

我的常规视图控制器(在尝试使导航栏透明之前)没有任何问题:

在此输入图像描述

我正在使用(在viewDidLoad和中试过viewWillAppear:):

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];

我明白了:

在此输入图像描述

灰色状态栏背景,完全白色导航栏,不与状态栏混合,然后视图开始.其他问题"答案"中的所有"解决方案"对我来说都会产生相同的结果.

我也尝试过设置self.edgesForExtendedLayout = UIRectEdgeNone;,self.edgesForExtendedLayout = UIRectEdgeAll;但这也没有任何影响.

如何在不弄乱所有内容的情况下使导航栏透明?

更新:在Warif Akhand Rishi的回答之后,我已经改变self.navigationController.view.backgroundColor = [UIColor clearColor];self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];,现在我得到一个灰色,统一的状态/导航栏,但仍然不透明:

在此输入图像描述

更新2:我已经连接了视图调试器,并且灰色背景似乎来自视图层次结构的根本深处,并且我的视图内容没有扩展.我self.edgesForExtendedLayout = UIRectEdgeAll;再次尝试使用最新的代码,但仍无济于事:

在此输入图像描述



1> MadeByDougla..:

swift 4透明导航栏:(确保视图延伸到导航栏后面显示,否则将只是黑色)

navigationController?.navigationBar.isTranslucent = true
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage() //remove pesky 1 pixel line

或者只是将导航栏颜色与当前vc的颜色匹配,但保持不透明.将半透明设置为false子视图将与导航栏对齐而不是在其下面.

navigationController?.navigationBar.isTranslucent = false
navigationController?.navigationBar.barTintColor = UIColor.yourColor
navigationController?.navigationBar.shadowImage = UIImage() //remove pesky 1 pixel line



2> Warif Akhand..:

改变你的

self.navigationController.view.backgroundColor = [UIColor clearColor];

对此

self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];



3> Can Poyrazoğ..:

好吧,在奋斗之后,我自己解决了这个问题。有多个问题。不是关于延伸的边缘,而是关于直线self.navigationController.view.backgroundColor = [UIColor clearColor];(必须self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];按照Warif Akhand Rishi的建议)以及我的表格视图的clip subviews属性。我已经更改了该行,还关闭了表格视图的剪切功能,现在它可以按预期运行。

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有