自定义UIBarButtonItem

几乎每个APP中都会用到UIBarButtonItem, 今天写了一个类让小伙伴们更能直接体会到封装的好处

  • 今天我讲一种自定义的UIBarButtonItem
  • 今天听到一件事, 好像UIBarButtonItem是私有控件, 没有直接暴露接口, 所以自定义更好;

  • 创建一个UIBarButtonItem的分类
  • 在.h文件中创建对外部的接口
#import 

@interface UIBarButtonItem (Extension)

/**
 *  自定义UIBarButtonItem
 *
 *  @param taget            taget 设置点击监听者
 *  @param action           action 设置点击监听方法
 *  @param imageNormal      imageNormal 设置UIBarButtonItem图片
 *  @param imageHighlighted imageHighlighted 设置UIBarButtonItem高亮如果
 *
 */
+ (UIBarButtonItem *)barButtonItemTaget:(id)taget action:(SEL)action imageNormal:(NSString *)imageNormal imageHighlighted:(NSString *)imageHighlighted;

@end
  • 在.m文件中实现自定义UIBarButtonItem的一些小功能

#import "UIBarButtonItem+Extension.h"

@implementation UIBarButtonItem (Extension)

/**
 *  创建一个item
 *
 *  @param taget            点击item后调用哪个对象方法
 *  @param action           点击item后调用target的哪个方法
 *  @param imageNormal      默认的图片
 *  @param imageHighlighted 高亮的图片
 *
 *  @return 创建完的item
 */

+ (UIBarButtonItem *)barButtonItemTaget:(id)taget action:(SEL)action imageNormal:(NSString *)imageNormal imageHighlighted:(NSString *)imageHighlighted {
    
    /** 设置导航栏上面的内容 */
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    
    [button setBackgroundImage:[UIImage imageNamed:imageNormal] forState:UIControlStateNormal];
    
    [button setBackgroundImage:[UIImage imageNamed:imageHighlighted] forState:UIControlStateHighlighted];
    
    [button addTarget:taget action:action forControlEvents:UIControlEventTouchUpInside];
    
    // 这样创建出来之后添加到item中是不会显示出来的:  没有尺寸
    //    CGSize size = leftButton.currentBackgroundImage.size;
    //    leftButton.frame = CGRectMake(0, 0, 20, 30);
    # 自定义frme, 几句代码以后都不用为计算控件frame而发愁
    button.size = button.currentBackgroundImage.size;
    
    // 谁push进来, 就从谁的左上角修改
    return  [[UIBarButtonItem alloc] initWithCustomView:button];
    
}
@end

你可能感兴趣的:(自定义UIBarButtonItem)