UINavigationBar属性的设置

想要改变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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.iOS7之后 要想改变navigationbar的颜色 可以这样子改 self.navigationContr...
    寒桥阅读 20,948评论 10 33
  • { 11、核心动画 需要签协议,但是系统帮签好 一、CABasicAnimation 1、创建基础动画对象 CAB...
    CYC666阅读 1,596评论 2 4
  • 青春总是聚少离多 回忆也便耐人寻味 有些人在茫茫人海中相遇 又在茫茫人海中走丢 只留下擦过肩头时的一缕清香 通讯录...
    木子辰阅读 243评论 0 1
  • 现女友:催眠师艾伦 前女友:跟踪狂萨斯基亚兼催眠师的顾客 男主角:帕特里克 莉安·莫利亚提讲述的是一位男性备受前女...
    桃酥1618阅读 348评论 0 0
  • 文/高琪 第一次认识他应该是在桃花源,那闲适的生活,迷人的景色,都让我陷入其中,不愿离开。 面对着...
    都是套路i阅读 634评论 0 1