自定义UIBarButtonItem

2016-06-03  本文已影响2263人  劉戦軍

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


#import <UIKit/UIKit.h>

@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

#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
上一篇下一篇

猜你喜欢

热点阅读