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 显示为半透明而不是不透明的白色的主要内容,如果未能解决你的问题,请参考以下文章
uinavigationbar 中的半透明在 iPhone 5 中有效,但在 4s 中无效
遮罩层(鼠标移到指定区域时,该区域显示,其他地方为半透明,移动时全部显示)