2013-09-25 163 views
10

这是我从iOS 6转换而来的应用程序。最初,ViewController在iOS 7中显示,导航栏下方的主视图的内容。UINavigationBar显示为半透明而不是不透明的白色

在UI构建器视图中,我在“扩展边”部分中关闭了“顶部条”和“底部条”,以解决该问题。然而,这个工作,现在在这个屏幕上导航栏似乎是半透明的(在下面的截图中呈灰色)。

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

我试过设置:

self.navigationController.navigationBar.translucent = NO; 

在我的ViewController的初始化代码,但是这也没有任何影响。

我错过了什么?

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

这里就是我看到在导航栏的截图:

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

+0

http://stackoverflow.com/questions/18929864/how-do-i-change-the-navigation-bar-color-in-ios-7/18929980#18929980 – Rajneesh071

回答

19

的问题是,我打电话

self.navigationController.navigationBar.translucent = NO; 

我的看法出现了。我感动的是代码为我的viewWillAppear中的方法,而现在它正确显示:

Correct

+1

调用它在'-viewDidLoad:'似乎也工作。 –

0

所有你需要的iOS6的做的是控制器的fullscreenlayout设置为NO,然后将其推送到NavigationController

[controller setWantsFullScreenLayout:NO]; 
4

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

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

,并考虑viewDidLayoutSubviews功能添加该代码...

4

你可以使用这个应用程序设置一刀切:

UINavigationBar.appearance().navigationBarAppearace.translucent = false 

我倾向于当应用程序最初加载了做我的AppDelegate类。

+0

我认为这已经改成了'UINavigationBar.appearance()。translucent = false'现在 – FortuneFaded

+0

它已经在Swift 3中进一步变为'isTranslucent'了。 –

相关问题