尝试
[[UINavigationBar appearance] setBarTintColor: [UIColor redColor]]
或者,在 iOS 6 上,
[[UINavigationBar appearance] setTintColor:[UIColor redColor]]
如果你的根视图控制器是导航控制器,可以通过以下方式获取它:
UINavigationController* nc = (UINavigationController*)[[[UIApplication sharedApplication] delegate] window].rootViewController
接着设置颜色:
[nc.navigationBar setBarTintColor:[UIColor redColor]]
如果你想在每个视图控制器中更改颜色,只需将代码放入每个viewWillAppear
方法中。
如果您不想在每个视图控制器中重写viewWillAppear
,可以为项目创建一个超级视图控制器。但如果已经太晚了,您也可以创建一个自定义UINavigationController
并简单地覆盖推送/弹出方法,例如:
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
[super pushViewController:viewController animated:animated];
[self.navigationBar setBarTintColor:[UIColor redColor]];
}
对这四个方法都要执行此操作:
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
或者至少适用于你使用的方法。
然后在需要另一种导航栏颜色的视图控制器中覆盖 viewWillAppear
方法。