UINavigationBar 显示为半透明而不是不透明的白色

Posted

技术标签:

【中文标题】UINavigationBar 显示为半透明而不是不透明的白色【英文标题】:UINavigationBar appearing as semi-translucent instead of opaque white 【发布时间】:2013-09-25 04:01:27 【问题描述】:

这是我从 ios 6 转换而来的应用程序。最初,ViewController 显示在 iOS 7 下,主视图的内容位于导航栏下方。

在 UI builder 视图中,我在“Extend Edges”部分关闭了“Under Top Bars”和“Under Bottom Bars”,以解决该问题。但是,这行得通,现在在此屏幕上,导航栏似乎是半透明的(在下面的屏幕截图中显示为灰色)。

我尝试在“模拟指标”下将“顶部栏”明确设置为“不透明导航栏”,但这没有效果。

我试过设置:

self.navigationController.navigationBar.translucent = NO;

在我的 ViewController 的初始化代码中,但这也没有效果。

我错过了什么?

更新:如果我在堆栈中的第一个 ViewController 中设置 self.navigationController.navigationBar.translucent = NO;,它就可以工作。但是,在有问题的 ViewController 之前,我确实想要半透明的导航栏。只有当我到达多层深度的视图时,我才想要一个非半透明的条(这个视图没有可滚动的数据,所以让它半透明是没有意义的)。

这是我在导航栏中看到的屏幕截图:

【问题讨论】:

***.com/questions/18929864/… 【参考方案1】:

问题是我在打电话

self.navigationController.navigationBar.translucent = NO;

在我的视图出现之后。我将该代码移到了我的 viewWillAppear 方法中,现在它可以正确显示:

【讨论】:

【参考方案2】:

你可以试试下面的代码...

self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.navigationController.navigationBar.translucent = NO;  

并在 View viewDidLayoutSubviews 函数中添加此代码...

【讨论】:

【参考方案3】:

您可以使用以下应用程序全面设置它:

UINavigationBar.appearance().navigationBarAppearace.translucent = false

当应用程序最初加载时,我倾向于在我的 AppDelegate 类中执行此操作。

【讨论】:

我相信现在已经改为UINavigationBar.appearance().translucent = false 在 Swift 3 中已进一步更改为 isTranslucent【参考方案4】:

对于 iOS6,您需要做的就是将控制器的全屏布局设置为 NO,然后将其推送到 NavigationController

[controller setWantsFullScreenLayout:NO];

【讨论】:

以上是关于UINavigationBar 显示为半透明而不是不透明的白色的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 半透明标签栏和导航栏

uinavigationbar 中的半透明在 iPhone 5 中有效,但在 4s 中无效

遮罩层(鼠标移到指定区域时,该区域显示,其他地方为半透明,移动时全部显示)

c#winform怎么把控件背景设为半透明,像这样

如何在winfrom中设置panel为半透明颜色,可以看到panel下面的控件,也可以设置panel的颜色。

UINavigationBar 立即消失,而带有动画的 pushViewcontroller 为真