如何使UINavigationBar背景透明?

首先,我已经看到了如何在iOS 8中使UINavigationBar透明的所有答案? 透明UINavigationBar并使UINavigationBar透明 。

他们似乎没有为我工作。

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

在这里输入图像说明

我正在使用(尝试在viewDidLoadviewWillAppear:

 [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]; 

我得到这个:

在这里输入图像说明

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

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

我怎样才能使我的导航栏透明而不会搞乱一切?

更新:继瓦里夫·阿赫德·里希的回答后,我改变了self.navigationController.view.backgroundColor = [UIColor clearColor]; to self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; ,现在我得到一个灰色,统一的状态/导航条,但仍然不透明:

在这里输入图像说明

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

在这里输入图像说明

改变你的

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

对此

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

好吧,挣扎之后,我自己解决了这个问题。 有不止一个问题。 这不是关于扩展边缘,它是关于行self.navigationController.view.backgroundColor = [UIColor clearColor]; (这必须是self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];如提示阿夫手Rishi),也是我的表视图的剪辑子视图属性。 我已经改变了这一行,也closures了我的表视图的剪辑,现在它按预期工作。

swift 4透明导航栏,确保视图延伸到导航栏后面显示:

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

或者只是将navbar颜色与当前vc的颜色相匹配

 navigationController?.navigationBar.isTranslucent = false navigationController?.navigationBar.barTintColor = UIColor.yourColor 

1.导航栏是白色的,而不是黑色的。所以你必须在NavigationBar下有一个视图(一个白色的视图),这是你的greyView的超级视图。透明设置的工作,但你不能看到它,因为fontcolor是白色的太。
所以你必须更新你的greyView的约束,所以它可以在导航栏下面延伸,然后你可以看到你的白色标题。
也许你必须改变你的statusbar的UIStatusBarStyle默认或lightcontent,我注意到statusBar的字体颜色也是白色的。

在你的控制器中尝试下面这行代码,可能会解决你的问题:

 self.extendedLayoutIncludesOpaqueBars = NO; self.automaticallyAdjustsScrollViewInsets = NO; And Remove this line :- self.edgesForExtendedLayout = UIRectEdgeNone