Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使UINavigationBar背景透明?_Ios_Uinavigationcontroller_Uinavigationbar - Fatal编程技术网

Ios 如何使UINavigationBar背景透明?

Ios 如何使UINavigationBar背景透明?,ios,uinavigationcontroller,uinavigationbar,Ios,Uinavigationcontroller,Uinavigationbar,首先,, 我已经在和看到了所有的答案 他们似乎不适合我 我的常规视图控制器(在尝试使导航栏透明之前)没有任何问题: 我正在使用(在viewDidLoad和viewwillshould:中都尝试过): 我明白了: 灰色状态栏背景,完全白色的导航栏,不与状态栏混合,然后视图开始。其他问题“答案”中的所有“解决方案”对我来说都产生相同的结果 我还尝试设置了self.edgesForExtendedLayout=UIRectEdgeNone或self.edgesForExtendedLayout=U

首先,, 我已经在和看到了所有的答案

他们似乎不适合我

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

我正在使用(在
viewDidLoad
viewwillshould:
中都尝试过):

我明白了:

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

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

我怎样才能使我的导航栏透明而不把一切搞糟

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

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

更改您的

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

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

1.导航栏是白色的,而不是黑色的。因此,导航栏下必须有一个视图(白色视图),这是灰色视图的超级视图。透明设置有效,但您无法看到它,因为fontcolor也是白色的。
2.因此您必须更新灰色视图的约束,以便它可以在导航栏下扩展。然后您可以看到您的白色标题。

3.可能您需要将statusBar的UIStatusBarStyle更改为default或lightcontent,我注意到statusBar的字体颜色也是白色。

好的,经过努力,我自己解决了这个问题。问题不止一个。这不是关于扩展的边缘,而是关于行
self.navigationController.view.backgroundColor=[UIColor clearColor](必须是
self.navigationController.navigationBar.backgroundColor=[UIColor clearColor];
,就像Warif Akhand Rishi建议的那样)以及我的表视图的clip子视图属性。我已经更改了该行并关闭了表格视图的剪裁,现在它可以正常工作。

swift 4透明导航栏: (确保视图延伸到导航条后面以显示,否则仅为黑色)

或者只是将导航栏的颜色和当前vc的颜色匹配,但保持不透明。将“半透明”设置为“假”时,子视图将与导航栏对齐,而不是位于导航栏下方

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

下面的代码适用于我

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.view.backgroundColor = .clear
self.navigationController?.navigationBar.backgroundColor = .clear

我参加聚会有点晚了,但我最近也需要做同样的事情,我发现下面的方法实际上效果最好(因为它可以移除所有阴影,并从堆栈中较低的部分中出血):


对于iOS 13和UINavigationBarAppearance API:

let navAppearance = UINavigationBarAppearance()
navAppearance.configureWithTransparentBackground()
self.navigationItem.standardAppearance = navAppearance

消除5+行阴影/背景/颜色代码

隐藏状态栏如何?在视图控制器中,是否在顶部栏下扩展了边?@SamB我不想隐藏状态栏。@beyowulf同时尝试了打开和关闭。对于test
self.view.backgroundColor=[UIColor redColor],它看起来更好(灰色,与状态栏统一,但仍然不透明)如果您在视图的顶部看到红色。这意味着你的上半身有空隙。把你的观点向上移动。(来源:y)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.view.backgroundColor = .clear
self.navigationController?.navigationBar.backgroundColor = .clear
guard let navBar = navigationController?.navigationBar else { return }
navBar.barStyle = .black
navBar.setBackgroundImage(UIImage(), for: .default)
navBar.shadowImage = UIImage()
navBar.isTranslucent = true
navBar.isHidden = false
let navAppearance = UINavigationBarAppearance()
navAppearance.configureWithTransparentBackground()
self.navigationItem.standardAppearance = navAppearance