美文网首页
常用的图文按钮封装

常用的图文按钮封装

作者: 没错就是豪哥灬 | 来源:发表于2021-01-11 17:04 被阅读0次

    CustomBtn.h

    typedef NS_ENUM(NSInteger,BtnType)

    {

        BT_LeftImg =1,// 左图右字

        BT_TopImg,// 上图下字

        BT_RightImg,// 右图左字

        BT_BottomImg,// 下图上字

        BT_OnlyImg,// 单图

        BT_OnlyText// 单字

    };

    #import  <UIKit/UIKit.h>

    @interface CustomBtn : UIButton

    @property (nonatomic,assign) BtnType type;

    @property (nonatomic,copy) NSString * selectImg; //选中的背景图

    @property (nonatomic,copy) NSString * normalImg; //正常情况下的背景图

    @property (nonatomic,assign) CGSize imgSize;

    @property (nonatomic,copy) NSString * text;//文字

    @property (nonatomic,strong) UIFont * textFont;//字号

    @property (nonatomic,strong) UIColor * selectTextColor;//选中时的字体颜色

    @property (nonatomic,strong) UIColor * normalTextColor;//正常时字体颜色

    @property (nonatomic,assign) NSTextAlignment textAlign; //默认居中

    @property (nonatomic,assign) CGFloat textImgGap;//字图间隔

    @property (nonatomic,assign) BOOL isSelected;

    @property (nonatomic,assign) UIEdgeInsets contentEdge;

    @property (nonatomic,strong) UIColor * normalBgColor;//非选中时的背景色

    @property (nonatomic,strong) UIColor * selectBgColor;//选中时的背景色

    @end

    CustomBtn.m


    #import "CustomBtn.h"

    @interface CustomBtn ()

    @property (nonatomic,strong) UIImageView * imgView;

    @property (nonatomic,strong) UILabel * textLBL;

    @end

    @implementation CustomBtn

    -(instancetype)init

    {

        if(self=[superinit])

        {

            //默认值

            _imgSize=CGSizeMake(20,20);

            _textImgGap=4;

            _contentEdge=UIEdgeInsetsMake(0,0,0,0);

            _selectBgColor = _normalBgColor = [UIColor whiteColor];

            _imgView= [UIImageViewnew];

            [selfaddSubview:_imgView];

            _textLBL= [UILabelnew];

            _textLBL.font=kFont_12;

            _textLBL.textColor= [UIColorblackColor];

            _textLBL.textAlignment = NSTextAlignmentCenter;

            [selfaddSubview:_textLBL];

        }

        return self;

    }

    -(void)setType:(BtnType)type

    {

        _type= type;

        [self upDateContentLayout];

    }

    -(void)setSelectImg:(NSString*)selectImg

    {

        _selectImg= selectImg;

    }

    -(void)setNormalImg:(NSString*)normalImg

    {

        _normalImg= normalImg;

        _imgView.image= [UIImageimageNamed:normalImg];

    }

    -(void)setImgSize:(CGSize)imgSize

    {

        _imgSize= imgSize;

    }

    -(void)setText:(NSString*)text

    {

        _textLBL.text= text;

    }

    -(void)setTextFont:(UIFont*)textFont

    {

        _textLBL.font= textFont;

    }

    -(void)setNormalTextColor:(UIColor*)normalTextColor

    {

        _normalTextColor= normalTextColor;

    }

    -(void)setSelectTextColor:(UIColor*)selectTextColor

    {

        _selectTextColor= selectTextColor;

    }

    -(void)setTextAlign:(NSTextAlignment)textAlign

    {

        _textLBL.textAlignment= textAlign;

    }

    -(void)setTextImgGap:(CGFloat)textImgGap

    {

        _textImgGap= textImgGap;

    }

    -(void)setContentEdge:(UIEdgeInsets)contentEdge

    {

        _contentEdge= contentEdge;

    }

    -(void)setNormalBgColor:(UIColor*)normalBgColor

    {

        _normalBgColor= normalBgColor;

    }

    -(void)setSelectBgColor:(UIColor*)selectBgColor

    {

        _selectBgColor= selectBgColor;

    }

    -(void)setIsSelected:(BOOL)isSelected

    {

        _isSelected= isSelected;

        //图片

        NSString* imgStr = isSelected ?_selectImg:_normalImg;

        if(imgStr.length!=0)

        {

            self.imgView.image= [UIImageimageNamed:imgStr];

        }

        //字体颜色

        self.textLBL.textColor = isSelected ? _selectTextColor:_normalTextColor;

        //背景色

        self.backgroundColor = isSelected ? _selectBgColor:_normalBgColor;

    }

    //更新布局

    -(void)upDateContentLayout

    {

        switch(_type)

        {

            caseBT_LeftImg://左图右字

            {

                [_imgView mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.centerY.mas_equalTo(self.mas_centerY);

                    make.left.mas_equalTo(self.mas_left).offset(_contentEdge.left);

                    make.size.mas_equalTo(_imgSize);

                }];

                [_textLBL mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.left.mas_equalTo(_imgView.mas_right).offset(_textImgGap);

                    make.centerY.mas_equalTo(self.mas_centerY);

                    make.right.mas_equalTo(self.mas_right);

                    make.height.mas_greaterThanOrEqualTo(0);

                }];

            }

                break;

            caseBT_TopImg://上图下字

            {

                [_imgView mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.top.mas_equalTo(self.mas_top).offset(_contentEdge.top);

                    make.centerX.mas_equalTo(self.mas_centerX);

                    make.size.mas_equalTo(_imgSize);

                }];

                [_textLBL mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.centerX.mas_equalTo(self.mas_centerX);

                    make.top.mas_equalTo(_imgView.mas_bottom).offset(_textImgGap);

                    make.width.height.mas_greaterThanOrEqualTo(0);

                }];

            }

                break;

            caseBT_RightImg://右图左字

            {

                [_imgView mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.centerY.mas_equalTo(self.mas_centerY);

                    make.right.mas_equalTo(self.mas_right).offset(_contentEdge.right);

                    make.size.mas_equalTo(_imgSize);

                }];

                [_textLBL mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.right.mas_equalTo(_imgView.mas_left).offset(-_textImgGap);

                    make.centerY.mas_equalTo(self.mas_centerY);

                    make.left.mas_equalTo(self.mas_left);

                    make.height.mas_greaterThanOrEqualTo(0);

                }];

            }

                break;

            caseBT_BottomImg://上字下图

            {

                [_imgView mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.centerX.mas_equalTo(self.mas_centerX);

                    make.bottom.mas_equalTo(self.mas_bottom).offset(_contentEdge.bottom);

                    make.size.mas_equalTo(_imgSize);

                }];

                [_textLBL mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.centerX.mas_equalTo(self.mas_centerX);

                    make.bottom.mas_equalTo(_imgView.mas_top).offset(-_textImgGap);

                    make.width.height.mas_greaterThanOrEqualTo(0);

                }];

            }

                break;

            caseBT_OnlyImg://单图

            {

                [_imgView mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.centerX.mas_equalTo(self.mas_centerX);

                    make.centerY.mas_equalTo(self.mas_centerY);

                    make.size.mas_equalTo(_imgSize);

                }];

            }

                break;

            caseBT_OnlyText://单字

            {

                [_textLBL mas_remakeConstraints:^(MASConstraintMaker *make) {

                    make.centerX.mas_equalTo(self.mas_centerX);

                    make.centerY.mas_equalTo(self.mas_centerY);

                    make.width.height.mas_greaterThanOrEqualTo(0);

                }];

            }

                break;

            default:

                break;

        }

    }

    使用详例:

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        [self setNavBackBtnImg:@"" Title:@"资讯"];

        //上图下字

        CustomBtn* topImgBtn = [[CustomBtnalloc]init];

        topImgBtn.selectImg= topImgBtn.normalImg=@"TestBtnImg";

        topImgBtn.imgSize=CGSizeMake(26,26);

        topImgBtn.contentEdge=UIEdgeInsetsMake(3,0,0,0);

        topImgBtn.textImgGap=6;

        topImgBtn.text=@"这是文字内容";

        topImgBtn.selectTextColor= topImgBtn.normalTextColor=kColor_Black;

        topImgBtn.textFont=kFont_10;

        topImgBtn.type=BT_TopImg;

        //topImgBtn.backgroundColor = [UIColor orangeColor];

        topImgBtn.tag=1;

        [topImgBtnaddTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

        [self.containerViewaddSubview:topImgBtn];

        [topImgBtnmas_makeConstraints:^(MASConstraintMaker *make) {

            make.centerX.mas_equalTo(self.containerView.mas_centerX);

            make.top.mas_equalTo(self.containerView.mas_top).offset(40);

            make.size.mas_equalTo(CGSizeMake(70,50));

        }];

        //左图右字

        CustomBtn* leftImgBtn = [[CustomBtnalloc]init];

        leftImgBtn.selectImg = @"TestBtn_RememberPwd_Select";

        leftImgBtn.normalImg = @"TestBtn_RememberPwd_Non";

        leftImgBtn.imgSize=CGSizeMake(12,12);

        leftImgBtn.contentEdge=UIEdgeInsetsMake(0,2,0,0);

        leftImgBtn.textImgGap=6;

        leftImgBtn.text=@"记住密码";

        leftImgBtn.textAlign=NSTextAlignmentLeft;

        leftImgBtn.selectTextColor= leftImgBtn.normalTextColor=kColor_Black;

        leftImgBtn.textFont=kFont_12;

        leftImgBtn.isSelected=NO;

        leftImgBtn.type=BT_LeftImg;

        //leftImgBtn.backgroundColor = [UIColor orangeColor];

        leftImgBtn.tag=2;

        [leftImgBtnaddTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

        [self.containerViewaddSubview:leftImgBtn];

        [leftImgBtnmas_makeConstraints:^(MASConstraintMaker *make) {

            make.centerX.mas_equalTo(self.containerView.mas_centerX);

            make.top.mas_equalTo(topImgBtn.mas_bottom).offset(30);

            make.size.mas_equalTo(CGSizeMake(75,20));

        }];

        //下图上字

        CustomBtn* bottomImgBtn = [[CustomBtnalloc]init];

        bottomImgBtn.selectImg= bottomImgBtn.normalImg=@"TestBtnImg";

        bottomImgBtn.imgSize=CGSizeMake(26,26);

        bottomImgBtn.contentEdge=UIEdgeInsetsMake(0,0, -3,0);

        bottomImgBtn.textImgGap=6;

        bottomImgBtn.text=@"这是文字内容";

        bottomImgBtn.selectTextColor= topImgBtn.normalTextColor=kColor_Black;

        bottomImgBtn.textFont=kFont_10;

        bottomImgBtn.type=BT_BottomImg;

       // bottomImgBtn.backgroundColor = [UIColor orangeColor];

        bottomImgBtn.tag=3;

        [bottomImgBtnaddTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

        [self.containerViewaddSubview:bottomImgBtn];

        [bottomImgBtnmas_makeConstraints:^(MASConstraintMaker *make) {

            make.centerX.mas_equalTo(self.containerView.mas_centerX);

            make.top.mas_equalTo(leftImgBtn.mas_top).offset(30);

            make.size.mas_equalTo(CGSizeMake(70,50));

        }];

        //右图左字

        CustomBtn* rightImgBtn = [[CustomBtnalloc]init];

        rightImgBtn.selectImg= rightImgBtn.normalImg=@"TestBtn_Arrow";

        rightImgBtn.imgSize=CGSizeMake(10,15);

        rightImgBtn.textImgGap=6;

        rightImgBtn.text=@"全部订单";

        rightImgBtn.selectTextColor= rightImgBtn.normalTextColor=kColor_Black;

        rightImgBtn.textFont=kFont_10;

        rightImgBtn.type=BT_RightImg;

        //rightImgBtn.backgroundColor = [UIColor orangeColor];

        rightImgBtn.tag=4;

        [rightImgBtnaddTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

        [self.containerViewaddSubview:rightImgBtn];

        [rightImgBtnmas_makeConstraints:^(MASConstraintMaker *make) {

            make.centerX.mas_equalTo(self.containerView.mas_centerX);

            make.top.mas_equalTo(bottomImgBtn.mas_bottom).offset(30);

            make.size.mas_equalTo(CGSizeMake(60,20));

        }];

        //单图

        CustomBtn* onlyImgBtn = [[CustomBtnalloc]init];

        onlyImgBtn.selectImg = @"TestBtn_Add_Select";

        onlyImgBtn.normalImg=@"TestBtn_Add_Non";

        onlyImgBtn.imgSize=CGSizeMake(14,14);

        onlyImgBtn.isSelected=YES;

        onlyImgBtn.type=BT_OnlyImg;

        onlyImgBtn.tag=4;

        [onlyImgBtnaddTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

        onlyImgBtn.backgroundColor= [UIColorblackColor];

        [self.containerViewaddSubview:onlyImgBtn];

        [onlyImgBtnmas_makeConstraints:^(MASConstraintMaker *make) {

           make.centerX.mas_equalTo(self.containerView.mas_centerX);

           make.top.mas_equalTo(rightImgBtn.mas_bottom).offset(30);

           make.size.mas_equalTo(CGSizeMake(40,40));

        }];

        //单字

        CustomBtn* onlyTextBtn = [[CustomBtnalloc]init];

        onlyTextBtn.text=@"18点前";

        onlyTextBtn.textFont=kFont_12;

        onlyTextBtn.textAlign = NSTextAlignmentCenter;

        onlyTextBtn.normalTextColor= onlyTextBtn.selectTextColor= [UIColorwhiteColor];

        onlyTextBtn.normalBgColor=rgba(153,153,153,1);

        onlyTextBtn.selectBgColor=kColor_Red;

        onlyTextBtn.isSelected=NO;

        onlyTextBtn.type=BT_OnlyText;

        onlyTextBtn.tag=5;

        onlyTextBtn.layer.cornerRadius=9.0;

        onlyTextBtn.layer.masksToBounds=YES;

        [onlyTextBtnaddTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

        [self.containerViewaddSubview:onlyTextBtn];

        [onlyTextBtnmas_makeConstraints:^(MASConstraintMaker *make) {

            make.centerX.mas_equalTo(self.containerView.mas_centerX);

            make.top.mas_equalTo(onlyImgBtn.mas_bottom).offset(30);

            make.size.mas_equalTo(CGSizeMake(60,18));

        }];

    }

    -(void)btnClick:(CustomBtn*)sender

    {

        NSSLog(@"点击的sender.tag=%ld",(long)sender.tag);

        if(sender.tag==2|| sender.tag==5)

        {

            sender.isSelected= !sender.isSelected;

        }

    }

    相关文章

      网友评论

          本文标题:常用的图文按钮封装

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