导航控制器的内存原理:
导航控制器进栈出栈 先进后出 后出先进
/*
*1.导航控制器在内存上管理viewcontroller是通过栈的方式
栈的特点:先进后出, 后进先出
push是入栈 pop是出栈
导航控制器始终显示栈顶得元素
*/
//设置导航栏的外观, 高度是44 状态栏的高度是20
//取消导航栏的半透明效果
设置导航栏是否透明
self.naVC.navigationBar.translucent = NO;
拖拽导航栏使导航栏出现和隐藏
self.naVC.hidesBarsOnSwipe = YES;
//点击空白隐藏和显示导航栏(轻拍手势)
-(void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event
{
if (self.naVC.navigationBarHidden) {
[self.naVC setNavigationBarHidden:NO animated:YES];
}else{
[self.naVC setNavigationBarHidden:YES animated:YES];
}
}
//viewControllers存放着导航控制器管理的所有viewController
//打印一下知道下标
NSLog(@”====%@”,self.navigationController.viewControllers);
UIViewController *vc = [self.navigationController.viewControllers objectAtIndex:1];
//跳到指定下标页面
[self.navigationController popToViewController:vc animated:YES];
//设置左侧按钮(系统的属性在后面加个autorelease) self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@”gear.png”] style:UIBarButtonItemStylePlain target:self action:@selector(leftAction:)] autorelease];
//自定义导航栏——>添加多个按钮
//收藏按钮
UIBarButtonItem *collection = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@”btn_icon_collect_1@3x.png”] style:UIBarButtonItemStylePlain target:self action:@selector(collectionAction)];
//分享按钮
UIBarButtonItem *share = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@”but_share_blue_new@3x.png”] style:UIBarButtonItemStylePlain target:self action:@selector(shareAction)];
NSArray *itemsArr = @[share,collection];
self.navigationItem.rightBarButtonItems = itemsArr;
按钮颜色渲染
UIImage *leftImage = [UIImage imageNamed:@”btn_nav_back.png”];
leftImage = [leftImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *rightImage = [UIImage imageNamed:@”btn_nav_share.png”];
//取消渲染
rightImage = [rightImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:leftImage style:UIBarButtonItemStyleDone target:self action:@selector(leftButtonAction:)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:rightImage style:UIBarButtonItemStyleDone target:self action:@selector(rightButtonAction:)];
//设置bar的背景图片
[naVC.navigationBar setBackgroundImage:[UIImage imageNamed:@”bg_nav.png”] forBarMetrics:UIBarMetricsDefault];
改变navc的字体颜色及大小
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSFontAttributeName:[UIFont systemFontOfSize:19],
NSForegroundColorAttributeName:[UIColor redColor]}];
ios7之后的导航栏默认是半透明的,scrollview会自动适应到00点,当滑动scrollview时候会导致崩溃,所以必须写下面这句话
[self setAutomaticallyAdjustsScrollViewInsets:NO];
.或者给他设置为不透明
设置导航栏完全透明,但不影响按钮和标题的显示
[naVC.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
naVC.navigationBar.shadowImage = [UIImage new];
naVC.navigationBar.translucent = YES;