Ios 导航栏外观()(着色颜色..)

Ios 导航栏外观()(着色颜色..),ios,swift,Ios,Swift,如何设置特定导航控制器的着色颜色 因为通过使用: UINavigationBar.appearance().barTintColor = UIColor(red: 0.1, green: 0.22, blue: 0.212, alpha: 1) 颜色将设置为所有导航控制器,不是吗 我尝试过这个代码,但它不工作!为什么? let nav = UINavigationController(rootViewController: feedvc) nav.navigationBar.appearanc

如何设置特定导航控制器的着色颜色

因为通过使用:

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)

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

nav.navigationBar.barTintColor=UIColor(红色:0.1,绿色:0.22,蓝色:0.212,alpha:1)

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

nav.navigationBar.barTintColor=UIColor(红色:0.1,绿色:0.22,蓝色:0.212,alpha:1)

外观()用于在全局范围内更改内容,并对所创建内容的下一个实例生效

因此,例如,如果在与应用外观()类型相同的对象的viewDidLoad中设置它,那么就太晚了,因为该对象已经创建。然而,在您的例子中,您是在实例而不是类上调用它,因此它无论如何都不会工作,因为它是类方法而不是对象方法

这就是为什么更改颜色在代码中不起作用的原因,只需设置
nav.navigationBar.barTintColor

外观()用于在全局范围内更改内容,并对所创建内容的下一个实例生效

因此,例如,如果在与应用外观()类型相同的对象的viewDidLoad中设置它,那么就太晚了,因为该对象已经创建。然而,在您的例子中,您是在实例而不是类上调用它,因此它无论如何都不会工作,因为它是类方法而不是对象方法



这就是为什么在您的代码中无法更改颜色的原因,只需设置
nav.navigationBar.bartincolor

您是否尝试过在视图控制器出现时更改颜色,并在视图控制器消失时将其删除?您是指从viewcontroller类访问它?因为我试图从appdelegatecheck DMan回答pleaseIt对我有效,但我现在想知道为什么nav.navigationBar无法访问外观(),而UINavigationBar可以?他们不是同一类型吗@WilliamKinaannavigation控制器与导航栏不同。导航栏是顶部的栏,而导航控制器是。。。好。。一种特定类型的视图控制器当视图控制器出现时,您是否尝试过更改颜色,当视图控制器消失时将其删除?您的意思是从viewcontroller类访问它?因为我试图从appdelegatecheck DMan回答pleaseIt对我有效,但我现在想知道为什么nav.navigationBar无法访问外观(),而UINavigationBar可以?他们不是同一类型吗@WilliamKinaannavigation控制器与导航栏不同。导航栏是顶部的栏,而导航控制器是。。。好。。一种特定的视图控制器它对我有效,但我现在想知道为什么它
nav.navigationBar
不能访问
appearance()
,而UINavigationBar可以?它们不是同一类型吗?我不确定这是否足以作为“为什么”,但
appearance()
在Swift中是一个静态方法,因此不能在类的实例上调用它。哦,是的@DMan!你是对的!因此,现在的问题是,我如何才能更改特定实例的外观(),而不是应用程序中的所有UINavigationBar外观?我不确定您的确切意思-上面的代码是否足够?通过直接访问要更改的属性来更改特定实例的外观-
UINavigationBar.appearance()
,返回一个外观代理,该代理在设置其属性后更改所有实例。它对我有效,但我现在想知道为什么它
nav.navigationBar
无法访问
appearance()
,而UINavigationBar可以?它们不是同一类型吗?我不确定这是否足以作为“为什么”,但
appearance()
在Swift中是一个静态方法,因此不能在类的实例上调用它。哦,是的@DMan!你是对的!因此,现在的问题是,我如何才能更改特定实例的外观(),而不是应用程序中的所有UINavigationBar外观?我不确定您的确切意思-上面的代码是否足够?更改特定实例的外观是通过访问您要直接更改的属性来完成的-
UINavigationBar.appearance()
,另一方面,它返回一个外观代理,在设置其属性后会更改所有实例。tintColor只是一个示例,我通常希望更改外观!我不是在ViewDidLoad中使用它,而是在app delegate中使用它,那么有什么问题?如何更改导航栏唯一实例的外观?您可以在其viewDidLoad中更改单个实例,方法是直接设置其值,如我的回答中所示,或者查看有关外观的文档和教程当包含InstancesofClass时,tintColor只是一个示例,我想更改外观!我不是在ViewDidLoad中使用它,而是在app delegate中使用它,那么有什么问题?如何更改导航栏的唯一实例的外观?您可以在其viewDidLoad中更改单个实例,方法是直接在我的回答中设置其值,或者在包含InstancesOfClass时查看有关外观的文档和教程