首先,我已经看到了如何在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;
再次尝试使用最新的代码,但仍无济于事:
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
改变你的
self.navigationController.view.backgroundColor = [UIColor clearColor];
对此
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
好吧,在奋斗之后,我自己解决了这个问题。有多个问题。不是关于延伸的边缘,而是关于直线self.navigationController.view.backgroundColor = [UIColor clearColor];
(必须self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
按照Warif Akhand Rishi的建议)以及我的表格视图的clip subviews属性。我已经更改了该行,还关闭了表格视图的剪切功能,现在它可以按预期运行。