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

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;
     
CGRect){{titleX,titleY},{titleW,titleH}};
return
 }
 
 //更具button的rect设定并返回UIImageView的rect
CGRect)imageRectForContentRect:(CGRect)contentRect
 {
CGFloat imageW = 25;
CGFloat imageH = 25;
CGFloat imageX = contentRect.size.width-26;
CGFloat imageY = 2.5;
     
CGRect){{imageX,imageY},{imageW,imageH}};
return
 }
 
 
     //使用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];
addSubview:selectAreaButton];



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