很多时候,我们需要用到在一个label里面添加一张小图片,实现图文混排的功能,就像下图
8BCAF8CF-5ED3-49F1-AC9E-3EA1325D7AD1.png
在这里我经常使用的是富文本,进行图文混排,这样就能够避免新建一个UIImageView,然后在进行各种约束之类的繁琐操作;
具体代码如下:
//1.首先你需要创建一个可变的AttributeString,里面存入你需要的字符串
NSMutableAttributedString *attri = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",self.model.address]];
//2.其次需要创建附件,这个附件是用来存放图片的
NSTextAttachment *attach = [[NSTextAttachment alloc]init];
attach = [[NSTextAttachment alloc]init];
//-->给附件传入图片
attach.image = [UIImage imageNamed:@"实验室位置"];
//-->给附件一个frame,默认是和普通的文字一样的坐标,如果觉得没有对齐,可以在这里更改x和y值
//(此处小图片的宽高我进行了屏幕适配,乘以了比例)
attach.bounds = CGRectMake(0, - 2, 10 * self.view.width / 320.0f, 12 * self.view.width / 320.0f);
//-->将附件转换成AttributeString,供后面拼接
NSAttributedString *imgStr = [NSAttributedString attributedStringWithAttachment:attach];
//3.然后将附件和文字拼接起来
NSMutableAttributedString *attrF = [[NSMutableAttributedString alloc]initWithAttributedString:imgStr];
[attrF appendAttributedString:attri];
//4.接下来对新生成的拼接富文本进行进一步的文本属性设置,可设置颜色,字体等;
[attrF addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 * self.view.width / 320.0f] range:NSMakeRange(0, self.model.address.length + 2)];
//-->注意一下字符串的长度,我偷懒使用了一个空格设置间距,记得在length里面加上;
[attrF addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, self.model.address.length + 2)];
//5.最后给label赋予富文本字符,此处若是UIButton,则为setAttributedTitle
[self.locationLabel setAttributedText:attrF];
当然,对于UIButton,可以直接使用setImage方法,然后更改edgeInsets调整图片位置,与文字的间距等;
个人比较喜欢富文本,感觉比较轻便,干净;大家也可以试试~
网友评论