iOS --导航栏UIBarButtonItem封装

  • 导航栏,很多都设置单个图标相同的效果,怎么封装?
    • 写个工具类(继承NSObject):
    • 坏处:
      • 增加了一个新的类
      • 不易于理解,因为该功能属于UIBarButtonItem的功能。
#import "JPItemTool.h"

@implementation JPItemTool
+ (UIBarButtonItem *)itemWithImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
    [button setBackgroundImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
    [button sizeToFit];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    
    return [[UIBarButtonItem alloc] initWithCustomView:button];
}
@end
  • UIBarButton的扩展分类:
- 好处:
  + 不会增加新的类
  + 易于理解
  + 调用合理
#import "UIBarButtonItem+JPExtension.h"

@implementation UIBarButtonItem (JPExtension)
+ (instancetype)itemWithImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
    [button setBackgroundImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
    [button sizeToFit];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    
    return [[self alloc] initWithCustomView:button];
}
@end
  • 使用分类,设置导航栏按钮
 // 导航栏右边的内容
    UIBarButtonItem *moonItem = [UIBarButtonItem itemWithImage:@"mine-moon-icon" highImage:@"mine-moon-icon-click" target:self action:@selector(moonClick)];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,297评论 8 183
  • 大学四年真是过得百般滋味,以为自己压力山大,其实无病呻吟,间歇性狂躁,以为自己快乐的像只小鸟,可是瞬间没了翅膀,掉...
    小汝同学阅读 1,313评论 0 0
  • 距离上一次扎营已经过去一年,去年清明去的库不其沙漠,在漫天黄沙中扎营,夜晚对着篝火,把酒言欢,行酒令,玩游戏,等夜...
    滴水沁心阅读 3,663评论 5 7