首页 > 代码库 > IOS总结_实现UIButton的图文混排,同时显示文字和图片

IOS总结_实现UIButton的图文混排,同时显示文字和图片

我们常常需要用到按钮需要文字和图片同时显示,例如:


我们需要定义一个UIButton的子类


实现文件

- (id)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        //可根据自己的需要随意调整

        self.titleLabel.textAlignment=NSTextAlignmentRight;

        self.titleLabel.font=[UIFontsystemFontOfSize:14.0];

        self.imageView.contentMode=UIViewContentModeLeft;

    }

    return self;

}

//重写父类UIButton的方法


//更具button的rect设定并返回文本label的rect

- (CGRect)titleRectForContentRect:(CGRect)contentRect

{

    CGFloat titleW = contentRect.size.width-30;

    CGFloat titleH = contentRect.size.height;

    CGFloat titleX = 0;

    CGFloat titleY = 0;

    

    contentRect = (CGRect){{titleX,titleY},{titleW,titleH}};

    return contentRect;

}


//更具button的rect设定并返回UIImageView的rect

- (CGRect)imageRectForContentRect:(CGRect)contentRect

{

    CGFloat imageW = 25;

    CGFloat imageH = 25;

    CGFloat imageX = contentRect.size.width-26;

    CGFloat imageY = 2.5;

    

    contentRect = (CGRect){{imageX,imageY},{imageW,imageH}};

    return contentRect;

}


    //使用UIButton的子类

    yxpButton *selectAreaButton=[[yxpButtonalloc] initWithFrame:CGRectMake(200,5, 100, 30)];

    [selectAreaButton setTitle:@"图文混排"forState:UIControlStateNormal];

    [selectAreaButton setImage:[UIImageimageNamed:@"location"]forState:UIControlStateNormal];

    [selectAreaButton setTitleColor:[UIColorwhiteColor] forState:UIControlStateNormal];

    [navigationBgViewaddSubview:selectAreaButton];


就这样 就可以实现一个按钮的图文混排了