如何使UINavigationBar背景透明?
首先,我已经看到了如何在iOS 8中使UINavigationBar透明的所有答案? 透明UINavigationBar并使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];
我得到这个:
灰色状态栏背景,完全白色的导航栏不与状态栏混合,然后视图开始。 在其他问题“答案”中的所有“解决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