试试
[[UINavigationBar appearance] setBarTintColor: [UIColor redColor]];
或者,在 iOS 6 上,
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
如果您有一个导航控制器作为 rootViewController,请使用:
UINavigationController* nc = (UINavigationController*)[[[UIApplication sharedApplication] delegate] window].rootViewController;
然后设置颜色:
[nc.navigationBar setBarTintColor:[UIColor redColor]];
如果你想在每个viewcontroller中改变颜色,只需将代码放在每个viewWillAppear方法中
如果您不想在每个视图控制器中覆盖viewWillAppear,您可以为您的项目创建一个超级视图控制器。但如果为时已晚,您也可以创建自定义 UINavigationController 并简单地覆盖 push/pop 方法,例如:
-(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。