这是我正在从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之前,我做想要半透明的导航栏。只有当我到达一个深层的视图时,我才希望有一个非半透明的条形图(这个视图没有可滚动的数据,因此将它设置为半透明是没有意义的。)
以下是我在导航栏中看到的屏幕截图:
答案 0 :(得分:20)
问题是我在打电话
self.navigationController.navigationBar.translucent = NO;
在我的观点出现之后。我将该代码移动到我的viewWillAppear方法中,现在它显示正确:
答案 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];