封装UIBarButtonItem
在我们开发项目时候,经常会遇到导航栏左右两边存在按钮,或者不存在按钮
今天给大家封装一下这个功能:截图给大家看,同时提供代码
第一步
Snip20160801_4.png
第二步
Snip20160801_5.png
第三步:在.m文件里面封装
Snip20160801_7.png
/** * 创建一个item * * @param target 点击item后调用哪个对象的方法 * @param action 点击item后调用target的哪个方法 * @param image 图片 * @param highImage 高亮的图片 * * @return 创建完的item */ + (UIBarButtonItem *)itemWithTarget:(id)target action:(SEL)action image:(NSString *)image highImage:(NSString *)highImage { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; // 设置图片 [btn setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal]; [btn setBackgroundImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted]; // 设置尺寸 btn.size = btn.currentBackgroundImage.size; return [[UIBarButtonItem alloc] initWithCustomView:btn]; }
第四步:在.h文件提供出方法
Snip20160801_6.png
+ (UIBarButtonItem *)itemWithTarget:(id)target action:(SEL)action image:(NSString *)image highImage:(NSString *)highImage;
第五步
Snip20160801_8.png
self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(sweep) image:@"navigationbar_pop" highImage:@"navigationbar_pop"]; self.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(message) image:@"navigationbar_friendsearch" highImage:@"navigationbar_friendsearch"]; 注意:我这里把高亮图片和默认图片设置为了同一张图片,如果公司需求没有要求设置高亮,你就和我一样设置同一张图片就可,如果你要设置为空的话,会报一个警告,不过没有关系,我们可以给他设置一个空格@“ ”就把图片设置为@+ “ + 空格 +”就可以了
后面有个哥们给了个建议说封装一下文字,其实如果左右两边是文字的话使用系统自带的就可以了.这里我就贴一小段代码,自己看一下哈
UIBarButtonItem *item = [UIBarButtonItem appearance]; NSMutableDictionary *dict = [NSMutableDictionary dictionary]; dict[NSForegroundColorAttributeName] = [UIColor redColor]; [item setTitleTextAttributes:dict forState:UIControlStateNormal]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"哈哈" style:UIBarButtonItemStylePlain target:self action:@selector(click)]; }