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

时间:2013-09-25 04:01:27

标签: ios ios7

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

在UI构建器视图中,我关闭了“Extend Edges”部分中的“Under Top Bars”和“Under Bottom Bars”,以解决该问题。但是,现在在这个屏幕上,导航栏看起来是半透明的(在下面的屏幕截图中显示为灰色)。

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

我尝试过设置:

self.navigationController.navigationBar.translucent = NO;

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

我错过了什么?

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

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

Attempt to make bar white opaque have failed thus far in iOS 7...

4 个答案:

答案 0 :(得分:20)

问题是我在打电话

self.navigationController.navigationBar.translucent = NO;
在我的观点出现之后。我将该代码移动到我的viewWillAppear方法中,现在它显示正确:

Correct

答案 1 :(得分:5)

您可以尝试以下代码......

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

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

答案 2 :(得分:5)

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

UINavigationBar.appearance().navigationBarAppearace.translucent = false

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

答案 3 :(得分:1)

你需要为iOS 6做的就是将控制器的全屏布局设置为NO,然后将其推送到你的NavigationController

[controller setWantsFullScreenLayout:NO];