iOS-烦人的修改navigationBar的背景色

iOS修改背景色,看似很简单,其实很蛋疼,你可能听说过各种各样的方式。
1.修改barTintColor 同时translucent设为NO;
2.修改navigationBar的backgroundColor self.navigationController.navigationBar.backgroundColor = [UIColor redColor];

然而,我试过以后都没有用,但最后还是解决了。不废话,直接上代码
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]] forBarMetrics:UIBarMetricsDefault];

千万别手贱,去改什么navigationbar.translucent = YES,到时候bug满天飞,能把你气死。

但这还没完,statusbar颜色还没改,这简单,我们创建一个view插入到navigationBar中
[self.navigationController.navigationBar addSubview:self.fakeStatusBar];

等你退出页面就把这个fakeStatusBar隐藏,同时把navigationBar颜色复原。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    self.fakeStatusBar.hidden = YES;
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forBarMetrics:UIBarMetricsDefault]; 
}

你可能感兴趣的:(iOS-烦人的修改navigationBar的背景色)