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];
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;
[self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"topbar"]forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBarHidden = NO;
7.系统的返回箭头一般是这样的:先去掉返回标题。
然后,替换:
结果:
接着,设置一下图片:
结果:
好了!
发现,点击红框右下角的地方都能返回。
方法一
在当前页面加入下面方法
- (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;
}