导航栏的视图器的定义:
1 导航视图器是管理视图的工具 所管理的这些视图 之间有明显的层次关系 它是以栈的方式来管理的先进后出型的
2 导航视图器是不可见的 可见的是导航条 navigationbar
3 在导航条上显示的按钮和标题 是navigationitem 它是以众多 左按钮 标题 和众多右按钮组成的
4 导航栏再添加 试图控制器的时候 有一个根试图控制器必须添加 这个根试图控制器必须添加 这个根试图控制器是第一个界面‘
//导航栏的颜色
UINavigationController
//self.navigationController.navigationBar.backgroundColor=[UIColor blueColor];
//导航栏的样式
//只要不设置导航栏的样式 ios7 之后 默认都是半透明的
/**
UIBarStyleDefault = 0,
UIBarStyleBlack = 1,
UIBarStyleBlackOpaque = 1, 黑色
UIBarStyleBlack
UIBarStyleBlackTranslucent = 2,
*/
self.navigationController.navigationBar.barStyle=UIBarStyleBlack;
//3 是否透明 ios6之前 默认是NO(不透明 ) ios7 之后默认是YES 透明
self.navigationController.navigationBar.translucent=NO;
// Do any additional setup after loading the view.
/**
*状态栏的高度是20 导航栏的高度是 44 但是ios7之后是 设置导航栏的高度一般是64
将将导航栏的透明度置为不透明时 试图控制器 自带的视图 self.View 的farm 的x y 的值是(0 ,64) 导航条在透明的状态下 self.View 的fram 的x y的值是(0 , 0);
*/
//4 详情 设置详情之后导航条的高度会增加30
self.navigationItem.prompt=@"详情";
//5给导航条添加背景图
/**
UIBarMetricsDefault, 竖屏 这个才显示 导航栏的背景图
UIBarMetricsCompact, 横屏
UIBarMetricsDefaultPrompt
UIBarMetricsCompactPrompt,
UIBarMetricsLandscapePhone
UIBarMetricsLandscapePhonePrompt
*/
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header_bg64"] forBarMetrics:UIBarMetricsDefault];
self.navigationItem.title=[NSString stringWithFormat:@"第%ld层",self.navigationController.viewControllers.count];
//添加左按钮
//action 后边添加参数的话 参数类型UIBarbuttonitem类型的
UIBarButtonItem * leftBBI=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(leftBBIClick:)];
//添加一个按钮的方法
self.navigationItem.leftBarButtonItem=leftBBI;
//带标题的按钮
UIBarButtonItem*titleBBI=[[UIBarButtonItem alloc]initWithTitle:@"hello" style:UIBarButtonItemStylePlain target:self action:@selector(leftBBIClick:)];
//添加带图片的按钮
//给图片添加显然模式 若是图片只显示 图片状态 将图片显示成原始状态
//如果图片内容显示不出来 只显示轮廓 的话 需要给图片添加渲染[[UIImage imageNamed:@"图片名称+后缀"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
UIBarButtonItem*imageBBI=[[UIBarButtonItem alloc]initWithImage:[[UIImage imageNamed:@"itemImage"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]style:UIBarButtonItemStylePlain target:self action:@selector(leftBBIClick:)];
//添加多个左按钮的方法 使用数组
// self.navigationItem.leftBarButtonItems=[NSArray arrayWithObjects:leftBBI,titleBBI,imageBBI,nil] ;
//自定义导航栏按钮 既带文字 有待图片
UIButton*leftButton=[UIButton buttonWithType:UIButtonTypeCustom];
leftButton.frame=CGRectMake(0, 0, 44, 44);
[leftButton setTitle:@"按钮" forState:UIControlStateNormal];
[leftButton setBackgroundImage:[UIImage imageNamed:@"itemImage2"] forState:UIControlStateNormal];
[leftButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
//self.navigationItem.leftBarButtonItems=[NSArray arrayWithObjects:leftBBI,titleBBI,imageBBI,leftButton,nil] ;
UIBarButtonItem*customBBI=[[UIBarButtonItem alloc]initWithCustomView:leftButton];
// self.navigationItem.leftBarButtonItem=customBBI;
//添加右边的单个按钮
self.navigationItem.rightBarButtonItem=titleBBI;
//添加左边多个按钮
self.navigationItem.rightBarButtonItems=[NSArray arrayWithObjects: customBBI, titleBBI,imageBBI, nil];
//镂空颜色
self.navigationController.navigationBar.tintColor=[UIColor redColor];
//设置标题
//1 设置控制器视图标题
self.title=@"试图控制器标题";
//2 设置导航item 标题 这个属性是导航条显示标题 若这个属性没有设置 默认显示试图控制器的标题
self.navigationItem.title=@"导航显示标题";
//没办法 只能修改字体大小和字体颜色 想要修改用到了自定义
UILabel*titileLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, 10, 280, 44)];
titileLabel.text=@"自定义";
titileLabel.textColor=[UIColor blackColor];
titileLabel.font=[UIFont systemFontOfSize:12];
self.navigationItem.titleView=titileLabel;
}
//拿到保存界面的数组
//跳转到首页
[self.navigationController popToRootViewControllerAnimated:YES];
// NSArray*viewControllers=self.navigationController.viewControllers;
//
// //返回到指定位置
// [self.navigationController popToViewController:viewControllers[1] animated:YES];
//隐藏导航条
// self.navigationController.navigationBarHidden=YES;
-(void)buttonClick:(UIButton*)button
{
//界面跳转
SecondViewController*svc=[[SecondViewController alloc]init];
//到导航栏视图的界面的之间的跳转
[self.navigationController pushViewController:svc animated:YES];
//push之后 将Push的界面 直接压入到栈内
}
[self.navigationController popViewControllerAnimated:YES];
#pragma mark -----按钮点击事件-----
-(void)leftBBIClick:(UIBarButtonItem*)barbutton
{
}