iOS 导航栏相关问题 导航!!!!!!!!!!!!!!!
2016-09-19 18:23
204 查看
1. 导航栏添加搜索框
CGRect mainViewBounds =self.navigationController.view.bounds;
UISearchBar *customSearchBar = [[UISearchBaralloc]initWithFrame:CGRectMake(CGRectGetWidth(mainViewBounds)/2-((CGRectGetWidth(mainViewBounds)-120)/2),CGRectGetMinY(mainViewBounds)+22,CGRectGetWidth(mainViewBounds)-80,40)];
customSearchBar.delegate =self;
customSearchBar.showsCancelButton =NO;
customSearchBar.searchBarStyle =UISearchBarStyleMinimal;
// 整个背景颜色
// customSearchBar.backgroundColor = [UIColor whiteColor];
// 光标颜色
// customSearchBar.tintColor = [UIColor whiteColor];
[self.navigationController.viewaddSubview:
customSearchBar];
2. 导航栏放置多个按钮
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc]initWithTitle:@"first" style:UITabBarSystemItemContactstarget:self action:@selector(one:)];
UIBarButtonItem *anotherButton2 = [[UIBarButtonItem alloc]initWithTitle:@"second" style:UITabBarSystemItemContactstarget:self action:@selector(two:)];
[self.navigationItem setLeftBarButtonItems:[NSArrayarrayWithObjects:
anotherButton,anotherButton2,nil]];
3. 自定义导航按钮和标题
UIButton * leftBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
leftBtn.frame =CGRectMake(0,0,83,40);
// leftBtn.backgroundColor = [UIColor greenColor];
[leftBtn setTintColor:[UIColor whiteColor]];
[leftBtn setImageEdgeInsets:UIEdgeInsetsMake(0,
-50,
0, 0)];
[leftBtn setImage:[UIImage imageNamed:@"goback_normal"]forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(goback)forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem * leftItem = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];
self.navigationItem.leftBarButtonItem = leftItem;
左右区别:
self.navigationItem.rightBarButtonItem =
rightItem;
标题:
UIView * centerView = [[UIViewalloc]initWithFrame:CGRectMake(0,7,110,30)];
UILabel *titleLabel = [[UILabelalloc]initWithFrame:CGRectMake(0,0,110,30)];
titleLabel.text =@"选择所在桌位";
titleLabel.textColor = [UIColorwhiteColor];
[centerView addSubview:titleLabel];
self.navigationItem.titleView = centerView;
4. 自定义导航栏背景颜色
[self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"topbar"]forBarMetrics:UIBarMetricsDefault];
5. 隐藏系统导航栏
self.navigationController.navigationBarHidden
= NO;
6. 让新的view覆盖导航栏
[[UIApplication sharedApplication].keyWindow addSubview:yourView];
7.系统的返回箭头一般是这样的:先去掉返回标题。
[objc] view
plain copy
UIBarButtonItem *back = [[UIBarButtonItem alloc] init];
back.title = @"";
self.navigationItem.backBarButtonItem = back;
然后,替换:
[objc] view
plain copy
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"icon-erji"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
结果:
接着,设置一下图片:
[objc] view
plain copy
UIImage *backImage = [[UIImage imageNamed:@"icon-erji"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 25, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
结果:
好了!
发现,点击红框右下角的地方都能返回。
8.iOS 设置导航透明的两种方法
方法一
在当前页面加入下面方法
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
//去掉导航栏底部的黑线
self.navigationController.navigationBar.shadowImage = [UIImage new];
}
如果仅设置当前页导航透明,需加入下面方法
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:nil];
}
需要注意的是:如果返回上一页的操作有动画,则在上一页出现的时候,导航栏的颜色会逐渐变化
方法二
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;
}
仅设置当前页面
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 1;
}
CGRect mainViewBounds =self.navigationController.view.bounds;
UISearchBar *customSearchBar = [[UISearchBaralloc]initWithFrame:CGRectMake(CGRectGetWidth(mainViewBounds)/2-((CGRectGetWidth(mainViewBounds)-120)/2),CGRectGetMinY(mainViewBounds)+22,CGRectGetWidth(mainViewBounds)-80,40)];
customSearchBar.delegate =self;
customSearchBar.showsCancelButton =NO;
customSearchBar.searchBarStyle =UISearchBarStyleMinimal;
// 整个背景颜色
// customSearchBar.backgroundColor = [UIColor whiteColor];
// 光标颜色
// customSearchBar.tintColor = [UIColor whiteColor];
[self.navigationController.viewaddSubview:
customSearchBar];
2. 导航栏放置多个按钮
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc]initWithTitle:@"first" style:UITabBarSystemItemContactstarget:self action:@selector(one:)];
UIBarButtonItem *anotherButton2 = [[UIBarButtonItem alloc]initWithTitle:@"second" style:UITabBarSystemItemContactstarget:self action:@selector(two:)];
[self.navigationItem setLeftBarButtonItems:[NSArrayarrayWithObjects:
anotherButton,anotherButton2,nil]];
3. 自定义导航按钮和标题
UIButton * leftBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
leftBtn.frame =CGRectMake(0,0,83,40);
// leftBtn.backgroundColor = [UIColor greenColor];
[leftBtn setTintColor:[UIColor whiteColor]];
[leftBtn setImageEdgeInsets:UIEdgeInsetsMake(0,
-50,
0, 0)];
[leftBtn setImage:[UIImage imageNamed:@"goback_normal"]forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(goback)forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem * leftItem = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];
self.navigationItem.leftBarButtonItem = leftItem;
左右区别:
self.navigationItem.rightBarButtonItem =
rightItem;
标题:
UIView * centerView = [[UIViewalloc]initWithFrame:CGRectMake(0,7,110,30)];
UILabel *titleLabel = [[UILabelalloc]initWithFrame:CGRectMake(0,0,110,30)];
titleLabel.text =@"选择所在桌位";
titleLabel.textColor = [UIColorwhiteColor];
[centerView addSubview:titleLabel];
self.navigationItem.titleView = centerView;
4. 自定义导航栏背景颜色
[self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"topbar"]forBarMetrics:UIBarMetricsDefault];
5. 隐藏系统导航栏
self.navigationController.navigationBarHidden
= NO;
6. 让新的view覆盖导航栏
[[UIApplication sharedApplication].keyWindow addSubview:yourView];
[objc] view
plain copy
UIBarButtonItem *back = [[UIBarButtonItem alloc] init];
back.title = @"";
self.navigationItem.backBarButtonItem = back;
然后,替换:
[objc] view
plain copy
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"icon-erji"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
结果:
接着,设置一下图片:
[objc] view
plain copy
UIImage *backImage = [[UIImage imageNamed:@"icon-erji"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 25, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
结果:
好了!
发现,点击红框右下角的地方都能返回。
8.iOS 设置导航透明的两种方法
方法一
在当前页面加入下面方法
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
//去掉导航栏底部的黑线
self.navigationController.navigationBar.shadowImage = [UIImage new];
}
如果仅设置当前页导航透明,需加入下面方法
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:nil];
}
需要注意的是:如果返回上一页的操作有动画,则在上一页出现的时候,导航栏的颜色会逐渐变化
方法二
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;
}
仅设置当前页面
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 1;
}
相关文章推荐
- ios之导航渐变---/导航透明/隐藏导航栏以及手势返回遇到的问题,状态栏,tabbarItem角标
- ios修改导航栏相关问题
- iOS导航控制器使用interactivePopGestureRecognizer导致导航栏标题可能层次错乱的问题解决
- iOS导航栏的隐藏(优化导航出现和隐藏的问题)
- IOS TableView 动画相关问题(个人)
- iOS 摄像头和相册的相关问题总结
- ios浅谈关于nil和 NIL区别及相关问题
- VMware 安装Linux ios 遇到的相关问题
- iOS Dev 深入浅出 导航控制器(二)with表视图相关操作
- iOS 沙盒中文档路径相关问题答不是记者问 - 替人答的,摘录一下解答思路
- iOS开发之---静态库的编译以及相关问题的处理
- IOS开发之---静态库的编译以及相关问题的处理
- 初学shell,用于将iOS项目打包ipa之前修改相关字段的问题
- ios编译错误相关问题
- IOS开发---菜鸟学习之路--(二十四)-iOS7View被导航栏遮挡问题的解决
- iOS7下status bar相关问题的解决方法
- iOS开发与OpenGL ES相关问题整理(2)- 绘制图片上下颠倒
- iOS开发与OpenGL ES相关问题整理(2)- 绘制图片上下颠倒
- iOS开发之---静态库的编译以及相关问题的处理
- ios浅谈关于nil和 NIL区别及相关问题