我们常常需要用到按钮需要文字和图片同时显示,例如:
我们需要定义一个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];
就这样 就可以实现一个按钮的图文混排了
IOS总结_实现UIButton的图文混排,同时显示文字和图片