封装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

相关文章
|
7月前
|
JavaScript API
接口的封装
接口的封装
|
存储 Cloud Native 安全
C++ 封装成库
C++ 封装成库
|
Java 数据挖掘 数据库
封装的理解
封装的理解
106 0
|
3月前
|
数据安全/隐私保护 C语言 C++
C++(七)封装
本文档详细介绍了C++封装的概念及其应用。封装通过权限控制对外提供接口并隐藏内部数据,增强代码的安全性和可维护性。文档首先解释了`class`中的权限修饰符(`public`、`private`、`protected`)的作用,并通过示例展示了如何使用封装实现栈结构。接着介绍了构造器和析构器的使用方法,包括初始化列表的引入以及它们在内存管理和对象生命周期中的重要性。最后,通过分文件编程的方式展示了如何将类定义和实现分离,提高代码的模块化和复用性。
|
6月前
什么是封装?为什么是要封装?
什么是封装?为什么是要封装?
145 0
|
7月前
|
安全 C#
C#封装详解
C#封装详解
86 0
|
7月前
|
安全 数据安全/隐私保护
什么是封装?
什么是封装?
45 0
|
程序员
封装(了解一下)
封装(了解一下)
97 0