封装UIBarButtonItem

简介: 封装UIBarButtonItem

封装UIBarButtonItem


在我们开发项目时候,经常会遇到导航栏左右两边存在按钮,或者不存在按钮

今天给大家封装一下这个功能:截图给大家看,同时提供代码

第一步

6dff181755ed911cd9458399e568da16.png

Snip20160801_4.png

第二步

cc21b13af2adf311eea6a9c7ebb42f4e.png

Snip20160801_5.png

第三步:在.m文件里面封装

fc40989a1036603a54cb01f48c43463a.png

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文件提供出方法

da710f3a50363cd7330384e04d7ebb10.png

Snip20160801_6.png

+ (UIBarButtonItem *)itemWithTarget:(id)target action:(SEL)action image:(NSString *)image highImage:(NSString *)highImage;

第五步

3989a0004e55156ae36dfb211bcfb5c0.png

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)];
}

Dome:https://github.com/LYWGod/UIBarButtonItemExtension

相关文章
|
6月前
|
存储 Cloud Native 安全
C++ 封装成库
C++ 封装成库
|
6月前
|
JavaScript API
接口封装如何实现?
接口封装如何实现?
|
8月前
|
Java 数据挖掘 数据库
封装的理解
封装的理解
73 0
|
3天前
|
安全 C#
C#封装详解
C#封装详解
8 0
|
3天前
|
安全 数据安全/隐私保护
什么是封装?
什么是封装?
|
3天前
|
JavaScript 前端开发 Java
什么是封装?为什么是要封装?
什么是封装?为什么是要封装?
82 0
|
3天前
|
测试技术 API
(接口封装)
(接口封装)
47 0
|
9月前
|
程序员
封装(了解一下)
封装(了解一下)
58 0
|
9月前
手动封装callES6
手动封装callES6
27 0