導(dǎo)航欄的內(nèi)容/控件由棧頂控制器的navigationItem模型決定
加入的類型:UIBarButtonItem
注意:也可以UIBarButtonItem返回一個(gè)自定義View(initWithCustomView),然后可以setImage設(shè)置按鈕的圖片(正常和高亮),addTarget設(shè)置事件伶授,要sizeToFit設(shè)置大小!!!
左上角的返回按鈕:backBarButttonItem
注意:sizeToFit, self.navigationItem.rightBarButtonItem
中間的文字:title:vc.navigationItem.title
中間的視圖:titleView->加入view犁享,注意加入的控件要設(shè)置大小文兢。 [lable sizeToFit];
左右兩邊的內(nèi)容:leftBarButtonItem/rightBarButtonItem
用navigationBar設(shè)置屬性
self.navigationController.navigationBar
導(dǎo)航條的背景顏色:
//用背景圖片設(shè)置背景顏色
- [nav.navigationBar setBackgroundColor:[UIColor redColor]];
導(dǎo)航條的背景圖片: //設(shè)置導(dǎo)航條的背景圖片娱两,只能用默認(rèn)模式
- [nav.navigationBar setBackgroundImage:forBarMetrics:UIBarMetricsDefault];
導(dǎo)航條的字體的顏色和大小 -NSFontAttributeName [nav.navigationBar setTitleAttributes:];
導(dǎo)航條的前景色,比如按鈕的渲染顏色 //nav的渲染顏色
[self.navigationController.navigationBar setTintColor:[UIColor colorWithWhite:barRenderValue alpha:1]];
用圖片設(shè)置navigetion為透明 方法中forBarMetrics的參數(shù)含義: UIBarMetricsDefault, 橫豎屏都有效果 UIBarMetricsCompact, 橫屏 有效果, 豎屏沒有 UIBarMetricsDefaultPrompt 橫屏 有效果, 豎屏 沒有 UIBarMetricsCompactPrompt
//隱藏nav
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
//隱藏nav下面的線
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
修改返回按鈕上的圖片-在返回之前的那個(gè)界面進(jìn)行設(shè)置
[self.navigationController.navigationBar setBackIndicatorImage:[UIImage imageNamed:@"btn_backItem"]];
[self.navigationController.navigationBar setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"btn_backItem"]];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"" style:UIBarButtonItemStyleDone target:nil action:nil];```
#### 如設(shè)置UINavigation左邊/右邊的跳轉(zhuǎn)
加到navigationItem邑茄,注意此時(shí)的控制器要加入到了UINavigation時(shí))的right/left里面去
//注意是UIBarButtonItem類型
UIBarButtonItem *bar = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"menu_icon_bulb"] style:UIBarButtonItemStylePlain target:self action:@selector(push)];
//加入到self.navigationItem.rightBarButtonItem里面蛋叼。也可以是nitWithTitle等等。
self.navigationItem.rightBarButtonItem = bar;
pop方法會(huì)將控制器從棧(viewContrlloers/chirldControllers)移除掉
push方法不會(huì)移除控制器
storyBroad設(shè)置UINavigation
rootController/show(push-默認(rèn)加上了Item)
設(shè)置導(dǎo)航條
導(dǎo)航條默認(rèn)下的Scroll會(huì)有偏移量(64,0,0,0)
//設(shè)置不偏移
self.automaticallyAdijustsScrollViewInsets = NO;
//人為設(shè)置scroll的偏移量
self.tableView.contentInset = UIEdgeInsetmake(100,0,0,0);
//隱藏導(dǎo)航條
self.navigationController.navigationBar.hidden = YES;
設(shè)置導(dǎo)航條或者導(dǎo)航條上的控件的透明度是沒有效果的
//沒有效果
self.navigationController.navigationBar.alpha = 0;
思路:設(shè)置導(dǎo)航條的圖片/顏色-可以用來設(shè)置導(dǎo)航條/導(dǎo)航條上的控件的透明度
當(dāng)圖片為空的時(shí)候部蛇,導(dǎo)航條是半透明度的摊唇,當(dāng)用[[UIImage alloc]init]來創(chuàng)建一個(gè)空的圖片賦值,導(dǎo)航條的顏色是透明的
//模式必須是UIBarMetricsDefault默認(rèn)模式
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"hh"] forBarMetrics:UIBarMetricsDefault] ;
//設(shè)置導(dǎo)航條下面的線
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc]init];
設(shè)置全局對象涯鲁,統(tǒng)一設(shè)置
+ (void)initialize
{
if(self == [WMNavController class] )
{
- 全局對象
-appearanceWhenContainedInInstancesOfClasses:
UINavigationBar *nav = [UINavigationBar
appearanceWhenContainedInInstancesOfClasses:@[[WMNavController class]]];
//字體的大小和顏色
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
dic[NSFontAttributeName] = [UIFont systemFontOfSize:20];
dic[NSForegroundColorAttributeName] = [UIColor whiteColor];
[nav setTitleTextAttributes:dic];
//背景圖片NavBar64
[nav setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
}
}
跳轉(zhuǎn)判斷
for (UIViewController *controller in self.navigationController.viewControllers)
{
if ([controller isKindOfClass:[HomeMainViewController class]])
{
[self.navigationController popToViewController:controller animated:YES];
}
}