一、導(dǎo)航欄外觀
外觀 | 屬性 |
---|---|
bar的樣式 | barStyle |
bar的透明度 | translucent |
bar的顏色 | barTintColor |
bar上控件的顏色 | tintColor |
bar的背景圖片 | backgroundImage |
二、導(dǎo)航欄內(nèi)容
內(nèi)容 | 屬性 |
---|---|
標(biāo)題 | title |
標(biāo)題視圖 | titleView |
左側(cè)按鈕 | leftBarButtonItem |
右側(cè)按鈕 | rightBarButtonItem |
返回按鈕 | backBarButtonItem |
返回按鈕指示圖像 | backIndicatorImage |
返回按鈕遮罩圖像 | backIndicatorTransitionMaskImage |
第三、效果顯示
-
給viewController添加一個(gè)導(dǎo)航欄彤敛,默認(rèn)效果如下:
默認(rèn)效果.png
- 默認(rèn)添加一個(gè)子視圖
-(void)test1{
//默認(rèn)樣式
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
//默認(rèn)透明度為透明[此時(shí)添加的控件frame從屏幕最上方開始算起]
self.navigationController.navigationBar.translucent = YES;
UIView * showView = [[UIView alloc]initWithFrame:CGRectMake(100, 0, 200, 200)];
showView.backgroundColor = [UIColor purpleColor];
[self.view addSubview:showView];
}
默認(rèn)添加效果.png
、
- 透明度為不透明
//設(shè)置導(dǎo)航欄的barStyle和translucent
-(void)test2{
//默認(rèn)樣式
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
//透明度為不透明[此時(shí)添加的控件frame從導(dǎo)航欄下面開始算起]
self.navigationController.navigationBar.translucent = NO;
UIView * showView = [[UIView alloc]initWithFrame:CGRectMake(100, 0, 200, 200)];
showView.backgroundColor = [UIColor purpleColor];
[self.view addSubview:showView];
}
不透明.png
- edgesForExtendedLayout
self.edgesForExtendedLayout = UIRectEdgeNone;
透明2.png
第四了赌、導(dǎo)航欄的顏色設(shè)置:barTintColor
self.navigationController.navigationBar.barTintColor = [UIColor purpleColor];
bar顏色.png
第五、導(dǎo)航欄的控件顏色設(shè)置[默認(rèn)為藍(lán)色]tintColor
self.navigationController.navigationBar.tintColor = [UIColor redColor];
第六玄糟、設(shè)置背景圖片背景圖片不同的size會(huì)展示不同的效果
backgroundImage
64像素時(shí)勿她,會(huì)包含狀態(tài)欄
44像素時(shí),只包含導(dǎo)航欄
小于44時(shí)阵翎,會(huì)疊滿狀態(tài)欄和導(dǎo)航欄
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"圖片名"] forBarMetrics:UIBarMetricsDefault];
第七逢并、UIBarButtonItem
- 初始化的變化
1之剧、initWithBarButtonSystemItem: target: action:
系統(tǒng)提供樣式改變
UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward target:self action:@selector(pushNextController)];
self.navigationItem.rightBarButtonItem = right;
-(void)pushNextController{
SecondViewController * secondVc = [[SecondViewController alloc]init];
[self.navigationController pushViewController:secondVc animated:YES];
}
初始化一.png
2、initWithTitle: style: target: action:
style設(shè)置為UIBarButtonItemStylePlain
//使用title初始化砍聊,style不能使用邊框類型
UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithTitle:@"Right" style:UIBarButtonItemStylePlain target:self action:@selector(pushNextController)];
self.navigationItem.rightBarButtonItem = right;
初始化二.png
3背稼、initWithImage: style: target: action:
圖像需要進(jìn)行渲染,默認(rèn)渲染成模版
//默認(rèn)---渲染為模版時(shí)
UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@""] style:UIBarButtonItemStylePlain target:self action:@selector(pushNextController)];
//渲染為原圖
UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithImage:[[UIImage imageNamed:@""] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStylePlain target:self action:@selector(pushNextController)];
第八玻蝌、設(shè)置title和titleView
//設(shè)置title
self.navigationItem.title = @"title";
設(shè)置titleView
self.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];
titleView.png
//導(dǎo)航欄的控件顏色設(shè)置[默認(rèn)為藍(lán)色]
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];
titleView2.png
第九蟹肘、導(dǎo)航欄設(shè)置backBarButtonItem
- 沒有title,默認(rèn)顯示back
- 設(shè)置title俯树,顯示title的內(nèi)容
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"回去" style:UIBarButtonItemStylePlain target:nil action:nil];
back.png
補(bǔ)充
導(dǎo)航欄中設(shè)置控件的image對(duì)象都需要進(jìn)行渲染設(shè)置
默認(rèn)是渲染為模版帘腹,需要渲染為原圖才能正常顯示。