我一直在阅读以更改导航栏上的默认颜色我只需要将appdelegate中的第一个方法更新为此
self.window.rootViewController.navigationController.navigationBar.tintColor = [UIColor whiteColor];
但它似乎不起作用,所以我尝试在firstview的viewDidLoad方法中设置它:
self.parentViewController.navigationController.navigationBar.tintColor = [UIColor whiteColor];
这也不起作用。我怎么能改变这个?
答案 0 :(得分:6)
请勿使用self.parentViewController
,而是使用self
:
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
答案 1 :(得分:1)
当iphone 5到来时,我们必须设置两种设备类型。所以使用这个
if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
//iOS 5 new UINavigationBar custom background
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbg_ForiPhone5_Imagename.png"] forBarMetrics: UIBarMetricsDefault];
} else {
[self.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navbg_ForOtherIphone_Imagename.png"]] atIndex:0];
}
答案 2 :(得分:1)
在IOS7中你可以试试这个:
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
您可以按照以下步骤操作:
我创建了一个新的UINavigationController
,例如UIDemoNavController
,结果是:
- (void)viewDidLoad{
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
[super viewDidLoad];
}
这是完整的演示类:
#import "UIDemoNavController.h"
@interface UIDemoNavController()
@end
@implementation UIDemoNavController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {}
return self;
}
- (void)viewDidLoad{
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
}
@end
答案 3 :(得分:0)
尝试self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
UIViewController
类有一个属性navigationController
,无论多深,它都会返回嵌入的导航控制器,否则返回nil
。