想要改变Bar的背景颜色可以这样设置
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
取消半透明效果可以这样设置(默认是YES半透明的,设置成NO就是不透明)
self.navigationController.navigationBar.translucent = NO;
这样设置可以改变navigationBar标题Title的颜色,同理也可以改变其字体大小
NSDictionary *dic = [NSDictionary dictionaryWithObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName];
self.navigationController.navigationBar.titleTextAttributes = dic;
当想隐藏NavigationBar的时候可以进行如下设置
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
想要改变navigationBar的前景颜色,也就是所有UIBarButtonItem的字体颜色可以如下设置
self.navigationController.navigationBar.tintColor = [UIColor redColor];
你也可以设置单个的navigationItem的标题颜色,如leftBarButtonItem或者rightBarButtonItem的标题颜色
self.navigationItem.leftBarButtonItem.tintColor = [UIColor grayColor];
想要改变左右两边的按钮,即rightBarButtonItem或者leftBarButtonItem按钮的字体大小时,就需要用到UIBarButtonItem.当然,这里也可以改变返回按钮的字体颜色,当这里也对字体颜色进行设置,这些内容通常写在+initialize方法里
UIBarButtonItem *item = [UIBarButtonItem appearance];
//在这里可以改变rightBarButtonItem或者leftBarButtonItem按钮的字体颜色
item.tintColor = [UIColor redColor];
// 设置rightBarButtonItem或者leftBarButtonItem按钮字体大小
NSMutableDictionary * atts = [NSMutableDictionary dictionary];
atts[NSFontAttributeName] =[UIFont systemFontOfSize:30];
//这里也能改变rightBarButtonItem或者leftBarButtonItem按钮的字体颜色
//atts[NSForegroundColorAttributeName] = [UIColor colorWithRed:0.42f green:0.33f blue:0.27f alpha:1.00f];
// 将字典给item
[item setTitleTextAttributes:atts forState:UIControlStateNormal];
有的时候没有自定义返回按钮,但是用系统的返回按钮的时候又会有上一个控制器的标题,可以进行如下设置
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
当我们在自定义了UINavigationController的时候,就不用self.NavigationController了,直接获取到UINavigationBar进行设置更简单,具体如下
UINavigationBar *bar = [UINavigationBar appearance];
//得到bar之后就可以进行设置了
bar.barTintColor = [UIColor greenColor];
在iOS8之后,苹果又为UINavigationBar添加了一些其他的设置,尤其是当使用继承自UIScrollView控件的时候,使用这些设置就显得更加方便
1、当tableView等滑动时是否隐藏navigationBar,YES表示隐藏,NO表示不隐藏
self.navigationController.hidesBarsOnSwipe = YES;
2、当视图接受点击时是否隐藏navigationBar,YES表示隐藏,NO表示不隐藏
self.navigationController.hidesBarsOnTap = YES;
3、当键盘出现时是否隐藏navigationBar,YES表示隐藏,NO表示不隐藏
self.navigationController.hidesBarsWhenKeyboardAppears = YES;
4、当屏幕方向改变时是否隐藏navigationBar,YES表示隐藏,NO表示不隐藏
self.navigationController.hidesBarsWhenVerticallyCompact = YES;
5、当视图被push完之后是否隐藏navigationBar,YES表示隐藏,NO表示不隐藏
self.navigationController.hidesBottomBarWhenPushed = YES;