美文网首页
自定义UIBarButtonItem

自定义UIBarButtonItem

作者: 劉戦軍 | 来源:发表于2016-06-03 20:23 被阅读2263次

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

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

    • 创建一个UIBarButtonItem的分类
    • 在.h文件中创建对外部的接口
    #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
    
    • 在.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

          本文链接:https://www.haomeiwen.com/subject/exkldttx.html