2016-07-07 32 views
0

如何为特定的导航控制器设置色调颜色?NavigationBar外观()(浅色..)

由于使用:

UINavigationBar.appearance().barTintColor = UIColor(red: 0.1, green: 0.22, blue: 0.212, alpha: 1) 

的颜色将全部设置为导航控制器,是不是?

我试过这段代码,但它不工作!为什么?

let nav = UINavigationController(rootViewController: feedvc) 
nav.navigationBar.appearance().barTintColor = UIColor(red: 0.1, green: 0.22, blue: 0.212, alpha: 1) 
+0

您是否试图在视图控制器出现时更改颜色,并在视图控制器消失时将其删除? –

+0

你的意思是从viewcontroller类访问它吗?因为我试图从appdelegate – ramsserio

+0

检查* DMan *回答请 –

回答

1

您可以通过直接访问barTintColor设置一个特定的控制器的色调:

nav.navigationBar.barTintColor = UIColor(red: 0.1, green: 0.22, blue: 0.212, alpha: 1)

+0

它为我工作,但我想现在为什么它'nav.navigationBar'不能访问'appearance()'而UINavigationBar可以吗?他们不是同一类型吗? – ramsserio

+1

我不确定这是否足够作为“为什么”,但“外观()”是Swift中的静态方法,因此您无法在类的实例上调用它。 – DMan

+0

哦,是@三月!你是对的 !所以现在的问题是如何更改特定实例的外观(),而不是应用程序中的所有UINavigationBar外观? – ramsserio

1

外观()用于在全球范围内改变的事情,它需要为下一个效果创建的东西的实例。

因此,例如,如果您将其设置在与您应用外观()相同类型的对象的viewDidLoad中,那么由于该对象已经创建而已经太晚了。然而,在你的情况下,你是在一个实例上调用它而不是一个类,所以它不会工作,因为它是一个类方法而不是对象方法。

这就是为什么它不能在你的代码中工作,改变颜色只需设置nav.navigationBar.barTintColor

+0

tintColor只是一个例子,我想改变一般的外观! 我不是在ViewDidLoad中使用它,而是在应用程序委托中使用它,那么问题是什么?我怎样才能改变导航栏的独特实例的外观? – ramsserio

+1

您可以通过直接在我的答案中设置它的值来更改它的viewDidLoad中的单个实例,也可以查看有关appearanceWhenContainedInInstancesOfClasses的文档和教程 – Gruntcakes