【发布时间】:2014-12-09 10:09:23
【问题描述】:
我知道这已得到解答,但我有一些问题,我正在使用这个解决方案:link
唯一的变化是我在我的视图控制器中使用了这个,所以用navigationController!替换了self
我的问题:导航栏是黑色的,不透明。我错过了什么吗?
我在 xcode6.1 和部署目标 ios 7.1 中使用 swift
提前谢谢你!
编辑:(要求的代码)
override func viewDidLoad() {
super.viewDidLoad()
//Transparent navigation bar
navigationController!.navigationBar.translucent = true
navigationController!.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
/////
//other stuff
}
【问题讨论】:
-
显示您的代码,您将
self替换为navigationController!的声明并没有清楚说明您使用的是self.navigationController!.还是navigationController!.(前者是正确的)。 -
self.navigationController!.等于navigationController!.,我在viewDidLoad()中使用它 -
这是正确的,并且假设应用程序在展开可选
navigationController时不会崩溃,您的视图控制器已经在导航控制器堆栈中,那么代码应该可以工作。在那里放置一个断点,以确保您确实在使用这个 VC 类并执行代码。 -
是的,我试过了,我的应用程序不会崩溃并且代码会执行(如果我删除它,导航栏会变回 IB 中设置的默认白色半透明)
-
您的行代码在新项目中按预期工作,您要么在某处重新设置参数,要么有一些不可预测的布局,您应该能够通过视图调试轻松检查后者(类似于VC 的
view位于导航栏下方,因此您可以通过导航栏查看底层视图或窗口背景)。如果你不熟悉视图调试,尝试为可疑组件设置不同的颜色,看看会发生什么(如UIApplication.sharedApplication().keyWindow?.backgroundColor = UIColor.redColor())