導(dǎo)航欄顏色差異:
設(shè)置導(dǎo)航欄的 translucent 屬性為 NO
在單個界面設(shè)置
self.navigationController.navigationBar.translucent = NO;
如果是導(dǎo)航欄單獨設(shè)置
UINavigationBar * nav = [UINavigationBar appearance];
//設(shè)置背景色
nav.translucent = NO;
nav.barTintColor = ColorPrimary;
//設(shè)置字體顏色
NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
textAttrs[NSForegroundColorAttributeName] = White;
[nav setTitleTextAttributes:textAttrs];
[nav setTintColor:[UIColor whiteColor]];
對于導(dǎo)航欄和下面controller中間有一條線的情況,解決辦法是設(shè)置ShadowImage 屬性,但是這個屬性是設(shè)置那條線的顯示情況,單獨設(shè)置是不起作用的,只有同時設(shè)置 self.navigationController.navigationBar 的背景色才能起作用,所以這里設(shè)置self.navigationController.navigationBar 的背景色為空白圖片,并且把 ShadowImage設(shè)置為空白圖片 這樣就不會顯示出來那條黑線了,如果想把那條黑線改為其他顏色只需要修改 ShadowImage的圖片就可以了
對于單個界面
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//兩句代碼必須都有
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"無圖片"] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
}
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//兩句代碼必須都有
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"無圖片"] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:nil];
}
如果是全局設(shè)置(在UINavigationBar的封裝類里面設(shè)置就可以了)
//兩句代碼必須都要有
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"無圖片"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[UIImage new]];