美文网首页iOS Developer
扩展UIButton,设置文字加图片按钮

扩展UIButton,设置文字加图片按钮

作者: 几分心动i | 来源:发表于2017-07-18 15:30 被阅读0次

    .h中定义方法

    @interface UIButton (CustomButton)
    
    /** 图片在左,标题在右 */
    - (void)setIconInLeft;
    /** 图片在右,标题在左 */
    - (void)setIconInRight;
    /** 图片在上,标题在下 */
    - (void)setIconInTop;
    /** 图片在下,标题在上 */
    - (void)setIconInBottom;
    
    //** 可以自定义图片和标题间的间隔 */
    - (void)setIconInLeftWithSpacing:(CGFloat)Spacing;
    - (void)setIconInRightWithSpacing:(CGFloat)Spacing;
    - (void)setIconInTopWithSpacing:(CGFloat)Spacing;
    - (void)setIconInBottomWithSpacing:(CGFloat)Spacing;
    
    @end
    

    .m中实现方法

    #import "UIButton+CustomIcon.h"
    
    @implementation UIButton (CustomButton)
    
    - (void)setIconInLeftWithSpacing:(CGFloat)Spacing
    {
        self.titleEdgeInsets = (UIEdgeInsets){
            .top    = 0,
            .left   = 0,
            .bottom = 0,
            .right  = 0,
        };
        
        self.imageEdgeInsets = (UIEdgeInsets){
            .top    = 0,
            .left   = 0,
            .bottom = 0,
            .right  = 0,
        };
    }
    
    - (void)setIconInRightWithSpacing:(CGFloat)Spacing
    {
        CGFloat img_W = self.imageView.frame.size.width;
        CGFloat tit_W = self.titleLabel.frame.size.width;
        
        self.titleEdgeInsets = (UIEdgeInsets){
            .top    = 0,
            .left   = - (img_W + Spacing / 2),
            .bottom = 0,
            .right  =   (img_W + Spacing / 2),
        };
        
        self.imageEdgeInsets = (UIEdgeInsets){
            .top    = 0,
            .left   =   (tit_W + Spacing / 2),
            .bottom = 0,
            .right  = - (tit_W + Spacing / 2),
        };
    }
    
    - (void)setIconInTopWithSpacing:(CGFloat)Spacing
    {
        CGFloat img_W = self.imageView.frame.size.width;
        CGFloat img_H = self.imageView.frame.size.height;
        CGFloat tit_W = self.titleLabel.frame.size.width;
        CGFloat tit_H = self.titleLabel.frame.size.height;
        
        self.titleEdgeInsets = (UIEdgeInsets){
            .top    =   (tit_H / 2 + Spacing / 2),
            .left   = - (img_W / 2),
            .bottom = - (tit_H / 2 + Spacing / 2),
            .right  =   (img_W / 2),
        };
        
        self.imageEdgeInsets = (UIEdgeInsets){
            .top    = - (img_H / 2 + Spacing / 2),
            .left   =   (tit_W / 2),
            .bottom =   (img_H / 2 + Spacing / 2),
            .right  = - (tit_W / 2),
        };
    }
    
    - (void)setIconInBottomWithSpacing:(CGFloat)Spacing
    {
        CGFloat img_W = self.imageView.frame.size.width;
        CGFloat img_H = self.imageView.frame.size.height;
        CGFloat tit_W = self.titleLabel.frame.size.width;
        CGFloat tit_H = self.titleLabel.frame.size.height;
        
        self.titleEdgeInsets = (UIEdgeInsets){
            .top    = - (tit_H / 2 + Spacing / 2),
            .left   = - (img_W / 2),
            .bottom =   (tit_H / 2 + Spacing / 2),
            .right  =   (img_W / 2),
        };
        
        self.imageEdgeInsets = (UIEdgeInsets){
            .top    =   (img_H / 2 + Spacing / 2),
            .left   =   (tit_W / 2),
            .bottom = - (img_H / 2 + Spacing / 2),
            .right  = - (tit_W / 2),
        };
    }
    
    - (void)setIconInLeft
    {
        [self setIconInLeftWithSpacing:0];
    }
    
    - (void)setIconInRight
    {
        [self setIconInRightWithSpacing:0];
    }
    
    - (void)setIconInTop
    {
        [self setIconInTopWithSpacing:0];
    }
    
    - (void)setIconInBottom
    {
        [self setIconInBottomWithSpacing:0];
    }
    @end
    

    相关文章

      网友评论

        本文标题:扩展UIButton,设置文字加图片按钮

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