NavigationItem包括LeftBarButtonItem、RightBarButtonItem、BackBarButtonItem以及TitleView四个部分
- 创建左右 UIBarButtonItem
创建系统样式的 UIBarButtonItem
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:nil];
创建文字样式的 UIBarButtonItem
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"短信" style:UIBarButtonItemStyleDone target:self action:nil];
创建图片样式的 UIBarButtonItem
UIImage *image = [[UIImage imageNamed:@"iconfont-duanxin"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; // 32x32 显示原色
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:self action:nil];
创建继承自UIView样式的 UIBarButtonItem
UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
- 添加左右 UIBarButtonItem
[self.navigationItem setLeftBarButtonItem:leftItem];
[self.navigationItem setLeftBarButtonItems:@[leftItem1, leftItem2, leftItem3]];
[self.navigationItem setRightBarButtonItem:rightItem];
[self.navigationItem setRightBarButtonItems:@[rightItem1, rightItem2, rightItem3]];
- 设置导航条返回按钮 BackBarButtonItem
[self.navigationItem setBackBarButtonItem:backItem]; // 下一级界面生效,无需设置它的交互事件
- 设置 BarButtonItem 的一些属性
[item setTintColor:[UIColor redColor]]; // 设置item文字或图片的镂空颜色
[item setEnabled:YES]; // 设置item的交互事件是否可用
- 使用NavigationItem设置导航条标题
self.title = @"导航条标题";
self.navigationItem.title = @"导航条标题";
UIView *titleView = [[UIView alloc] init];
[titleView setFrame:CGRectMake(0, 0, 100, 44)];
[titleView setBackgroundColor:[UIColor orangeColor]];
[self.navigationItem setTitleView:titleView];
- 其他
设置备注,关于这个界面的说明,工作很少用的
self.navigationItem.prompt = @"我是备注";
- 去除导航条返回按钮的标题(将标题向上移动60)
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
- 去除导航条顶部的分割线
if ([_tabBarCtrl.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
NSArray *list=_tabBarCtrl.navigationController.navigationBar.subviews;
for (id obj in list) {
if ([obj isKindOfClass:[UIImageView class]]) {
UIImageView *imageView=(UIImageView *)obj;
NSArray *list2=imageView.subviews;
for (id obj2 in list2) {
if ([obj2 isKindOfClass:[UIImageView class]]) {
UIImageView *imageView2=(UIImageView *)obj2;
imageView2.hidden=YES;
}
}
}
}
}