1熄赡、基本概念
1)和導航控制器一樣宇攻,是一個容器抱虐,用來顯示導航欄上的試圖亩鬼,
2) 豎屏44 橫屏32
2驹针、配置外觀
1) 設(shè)置導航欄樣式
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
例如:self.navigationController.navigationBar.barStyle = UIBarStyleBlack;//黑色
2)設(shè)置導航欄是否透明烘挫,設(shè)為不透明能夠屏蔽導航欄對試圖frame的影響
self.navigationController.navigationBar.translucent = NO;//NO代表不透明
1) 配置背景顏色
self.navigationController.navigationBar.barTintColor = [UIColor magentaColor];//tint |t?nt|色彩
2)配置背景圖片
self.navigationController.navigationBar setBackgroundImage: forBarMetrics:
3) 改變導航欄上默認按鈕顏色
self.navigationBar.tintColor
3、配置內(nèi)容
1)每個controller都有專屬的navigationItem
1)通過配置不同控制器的navigationItem讓不同控制器的導航欄顯示不同的內(nèi)容
2)navigationItem的常用屬性
leftBarButtonItem
rightBarButtonItem
backBarButtonItem
title
titleView
3) backBarButtonItem是由上一層控制器控制的
4) 導航欄的prompt屬性柬甥,通過navigationItem來設(shè)置饮六,其主要作用是用于提示用戶。比如苛蒲,用戶正在請求網(wǎng)絡(luò)數(shù)據(jù)時卤橄,提示用戶數(shù)據(jù)正在加載。待加載完成后可以將它的值設(shè)置為nil臂外,取消顯示窟扑。
4)具體的代碼做法
給控制器設(shè)置標題
self.stitle = @"測試";
self.navigationItem.title = @"測試";
1.重新設(shè)置導航欄的標題樣式
UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeContactAdd];
[btn1 addTarget:self action:@selector(clickTitle) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.titleView = btn1;
2.給導航設(shè)置右邊的barbuttonItem
UIBarButtonItem *reginBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(clickReigter)];
self.navigationItem.rightBarButtonItem = reginBarButtonItem;
UIBarButtonItem *style1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(clickReigter)];
3.給右邊設(shè)置多個barbuttonitem
self.navigationItem.rightBarButtonItems = @[reginBarButtonItem,style1];
//self.navigationItem.leftBarButtonItems =@[reginBarButtonItem,style1];
self.navigationItem.prompt = @"正在努力幫你加載";//增加一個提示(prompt提示)
5)UINavigationBar上面設(shè)置的button分類(請認真分析)
1.添加系統(tǒng)自己的button(其他的控制器界面都會顯示)
[self.navigationController.navigationBar addSubview:rigisterBtn];//設(shè)置的BarButton在每一個界面都會顯示
2.添加自己當前控制器界面的BarButton(例如,登錄頁面右上角的注冊按鈕)
(1)self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:rigisterBtn];
(2)添加系統(tǒng)的BarButton(也只有當前系統(tǒng)有這個button)
UIBarButtonItem *reginBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(clickReigter)];//刷新
self.navigationItem.rightBarButtonItem = reginBarButtonItem;(刷新按鈕)
(3)設(shè)置多個按鈕漏健,按照數(shù)組的方式排列在導航欄上(例如在導航欄上添加刷新和返回按鈕)
6).導航欄的出現(xiàn)和隱藏方法(可以設(shè)置在界面轉(zhuǎn)換的方法里面)
1.讓第二個控制器顯示的時候嚎货,將導航欄隱藏
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES ];
或者 self.navigationBarHidden= YES;
}
當?shù)诙€控制器消失的時候蔫浆,不隱藏導航欄
- (void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:NO];
或者 self.navigationBarHidden= NO;
}
7).重新設(shè)置導航欄的返回按鈕 繼承解決都返回的問題(新建一個類殖属,父類還是UIViewController)(定義一個類讓所有的控制器都遵守協(xié)議,都設(shè)置為返回樣式瓦盛,否則進入界面會成為主題放在導航欄的左邊)
重新設(shè)置導航欄的返回按鈕 繼承解決都返回的問題
UIBarButtonItem *customBackItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self
self.navigationItem.backBarButtonItem = customBackItem;