我们常常需要用到按钮需要文字和图片同时显示,例如:
我们需要定义一个UIButton的子类
实现文件
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//可根据自己的需要随意调整
self.titleLabel.textAlignment=NSTextAlignmentRight;
self.titleLabel.font=[UIFont systemFontOfSize: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=[[yxpButton alloc] initWithFrame:CGRectMake(200, 5, 100, 30)];
[selectAreaButton setTitle:@"图文混排" forState:UIControlStateNormal];
[selectAreaButton setImage:[UIImage imageNamed:@"location"] forState:UIControlStateNormal];
[selectAreaButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[navigationBgView addSubview:selectAreaButton];
就这样 就可以实现一个按钮的图文混排了