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]
toself.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同时尝试了打开和关闭。对于testself.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