在进行设置之前,我们要先区分好几个常用的概念
UIBarButtonItem:描述按钮具体的内容
UINavigationItem:设置导航条上内容(左边,右边,中间)
tabBarItem: 设置tabBar上按钮内容(tabBarButton)
由于设置的导航栏UIBarButtonItem方法相同,所以我们可以创建一个UIBarButtonItem的分类用于快速创建Item。
+ (UIBarButtonItem *)itemWithImage:(UIImage *)image hightImage:(UIImage *)hightImage target:(id)target action:(SEL)aciton
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setImage:image forState:UIControlStateNormal];
[btn setImage:hightImage forState:UIControlStateHighlighted];
[btn addTarget:target action:aciton forControlEvents:UIControlEventTouchUpInside];
[btn sizeToFit];
UIView *container = [[UIView alloc] initWithFrame:btn.bounds];
[container addSubview:btn];
return [[UIBarButtonItem alloc] initWithCustomView:container];
}
- 不实用分类
UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[leftBtn setImage:[UIImage imageNamed:@"ImageName"] forState:UIControlStateNormal];
[leftBtn setImage:[UIImage imageNamed:@"ImageName"] forState:UIControlStateHighlighted];
[leftBtn addTarget:self action:@selector(leftAction) forControlEvents:UIControlEventTouchUpInside];
[leftBtn sizeToFit];
UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:leftBtn];
self.navigationItem.leftBarButtonItem = leftItem;
//右边的按钮分类方法
self.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithImage:[UIImage imageNamed:@"ImageName"] hightImage:[UIImage imageNamed:@"ImageName"] target:self action:@selector(leftAction)];
//标题
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ImageName"]];
处理导航条标题
在自定义NavigationController
+ (void)load
{
UINavigationBar *navBar = [UINavigationBar appearanceWhenContainedIn:self, nil];
//ios 之后推荐使用appearanceWhenContainedInInstancesOfClasses
//只要通过模型进行设置,都是使用富文本进行设置
//设置标题
NSMutableDictionary *titleDic = [NSMutableDictionary dictionary];
titleDic[NSFontAttributeName] = [UIFont systemFontOfSize:20];
[navBar setTitleTextAttributes:titleDic];
// 设置导航条背景图片
[navBar setBackgroundImage:[UIImage imageNamed:@"imageName"] forBarMetrics:UIBarMetricsDefault];
}
设置导航控制器的跳转逻辑
再有tabbar的时候我们跳转之后需要净底部的tabbar隐藏 然后返回的时候 还需要将它显示出来。
SettingTVController *settingTVC = [[SettingTVController alloc] init];
//必须在跳转之前设置
settingTVC.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:settingTVC animated:YES];
网友评论