导航栏颜色差异:
设置导航栏的 translucent 属性为 NO
在单个界面设置
self.navigationController.navigationBar.translucent = NO;
如果是导航栏单独设置
UINavigationBar * nav = [UINavigationBar appearance];
//设置背景色
nav.translucent = NO;
nav.barTintColor = ColorPrimary;
//设置字体颜色
NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
textAttrs[NSForegroundColorAttributeName] = White;
[nav setTitleTextAttributes:textAttrs];
[nav setTintColor:[UIColor whiteColor]];
对于导航栏和下面controller中间有一条线的情况,解决办法是设置ShadowImage 属性,但是这个属性是设置那条线的显示情况,单独设置是不起作用的,只有同时设置 self.navigationController.navigationBar 的背景色才能起作用,所以这里设置self.navigationController.navigationBar 的背景色为空白图片,并且把 ShadowImage设置为空白图片 这样就不会显示出来那条黑线了,如果想把那条黑线改为其他颜色只需要修改 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];
}
如果是全局设置(在UINavigationBar的封装类里面设置就可以了)
//两句代码必须都要有
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"无图片"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
网友评论