11

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

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

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

我试过设置:

self.navigationController.navigationBar.translucent = NO;

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

我错过了什么?

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

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

迄今为止,在 iOS 7 中尝试使白色条不透明的尝试都失败了……

4

4 回答 4

20

问题是我在打电话

self.navigationController.navigationBar.translucent = NO;

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

正确的

于 2013-09-25T04:14:41.450 回答
5

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

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

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

于 2013-09-25T05:56:57.407 回答
5

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

UINavigationBar.appearance().navigationBarAppearace.translucent = false

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

于 2015-06-21T10:19:18.147 回答
1

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

[controller setWantsFullScreenLayout:NO];
于 2013-09-25T05:37:14.963 回答