我是Objective-C的新手,今天我尝试更改导航栏的颜色,这可以使用此代码:
appDelegate.m :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0xf4f4f4)];
return YES;
}
现在我尝试更改特定的ViewController导航栏,但这不起作用。
ViewController2.m:
- (void)viewDidLoad
{
[super viewDidLoad];
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x363636)];
self.navigationController.navigationBar.translucent = NO;
}
当我进入此ViewContoller时,他的导航颜色为f4f4f4
,当我转到其他ViewController并返回时,它会将颜色更改为363636
。
为什么这在第一次不起作用? 有人可以向我解释一下......
(抱歉关于我的英文,谢谢。)
答案 0 :(得分:16)
使用时
[UINavigationBar appearance]
它会更改所有导航栏。在你的viewcontroller中,只需做
[self.navigationBar setBarTintColor:UIColorFromRGB(0x363636)];
答案 1 :(得分:3)
您可以实现Nathanael在视图控制器的-(void) viewDidLoad
方法中所说的内容。但是,如果您正在使用故事板,您还可以选择navigation item
并从File inspector
更改色调颜色,而无需编码。
答案 2 :(得分:0)
使用导航栏的tintcolor属性更改颜色
答案 3 :(得分:0)
你可以尝试一下,我在我的AppDelegate中更改导航栏颜色,所以所有应用程序都有相同的颜色,但我必须在单个视图控制器中更改导航栏颜色,所以我这样做了:
AppDelegate中的
let color = UIColor(red:0.24, green:0.72, blue:0.28, alpha:1.0)
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().barTintColor = color
并且在viewDidLoad的视图控制器中我有:
self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()
在viewWillDissappear
这个:
super.viewWillDisappear(animated)
let color = UIColor(red:0.24, green:0.72, blue:0.28, alpha:1.0)
self.navigationController?.navigationBar.barTintColor = color
它将导航栏颜色返回到相同的颜色
答案 4 :(得分:0)
对于iOS 10,你可以像这样使用barStyle:
白条颜色:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
黑色条纹:
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
需要在ViewDidLoad中设置BarStyle以进行正常的动画制作:)