想要改變Bar的背景顏色可以這樣設(shè)置
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
取消半透明效果可以這樣設(shè)置(默認(rèn)是YES半透明的,設(shè)置成NO就是不透明)
self.navigationController.navigationBar.translucent = NO;
這樣設(shè)置可以改變navigationBar標(biāo)題Title的顏色,同理也可以改變其字體大小
NSDictionary *dic = [NSDictionary dictionaryWithObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName];
self.navigationController.navigationBar.titleTextAttributes = dic;
當(dāng)想隱藏NavigationBar的時候可以進(jìn)行如下設(shè)置
- (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的字體顏色可以如下設(shè)置
self.navigationController.navigationBar.tintColor = [UIColor redColor];
你也可以設(shè)置單個的navigationItem的標(biāo)題顏色,如leftBarButtonItem或者rightBarButtonItem的標(biāo)題顏色
self.navigationItem.leftBarButtonItem.tintColor = [UIColor grayColor];
想要改變左右兩邊的按鈕,即rightBarButtonItem或者leftBarButtonItem按鈕的字體大小時,就需要用到UIBarButtonItem.當(dāng)然,這里也可以改變返回按鈕的字體顏色,當(dāng)這里也對字體顏色進(jìn)行設(shè)置,這些內(nèi)容通常寫在+initialize方法里
UIBarButtonItem *item = [UIBarButtonItem appearance];
//在這里可以改變rightBarButtonItem或者leftBarButtonItem按鈕的字體顏色
item.tintColor = [UIColor redColor];
// 設(shè)置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];
有的時候沒有自定義返回按鈕,但是用系統(tǒng)的返回按鈕的時候又會有上一個控制器的標(biāo)題,可以進(jìn)行如下設(shè)置
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
當(dāng)我們在自定義了UINavigationController的時候,就不用self.NavigationController了,直接獲取到UINavigationBar進(jìn)行設(shè)置更簡單,具體如下
UINavigationBar *bar = [UINavigationBar appearance];
//得到bar之后就可以進(jìn)行設(shè)置了
bar.barTintColor = [UIColor greenColor];
在iOS8之后,蘋果又為UINavigationBar添加了一些其他的設(shè)置,尤其是當(dāng)使用繼承自UIScrollView控件的時候,使用這些設(shè)置就顯得更加方便
1陌兑、當(dāng)tableView等滑動時是否隱藏navigationBar,YES表示隱藏,NO表示不隱藏
self.navigationController.hidesBarsOnSwipe = YES;
2、當(dāng)視圖接受點(diǎn)擊時是否隱藏navigationBar,YES表示隱藏,NO表示不隱藏
self.navigationController.hidesBarsOnTap = YES;
3啄育、當(dāng)鍵盤出現(xiàn)時是否隱藏navigationBar,YES表示隱藏,NO表示不隱藏
self.navigationController.hidesBarsWhenKeyboardAppears = YES;
4肾扰、當(dāng)屏幕方向改變時是否隱藏navigationBar,YES表示隱藏,NO表示不隱藏
self.navigationController.hidesBarsWhenVerticallyCompact = YES;
5香罐、當(dāng)視圖被push完之后是否隱藏navigationBar,YES表示隱藏,NO表示不隱藏
self.navigationController.hidesBottomBarWhenPushed = YES;