文本尾部添加小图片

需求点
经常会有小伙伴遇到这样的需求:无论文字多长,一定要在文字的最后添加一个小图片 。
笔者当初遇到这个需求的时候废了好大力气算出了文字的里最后一个字的rect,也就是位置,然后在右面硬生生加上了一个 。结果后来到适配的时候很麻烦 。其实实现方案很简单:使用!

文本尾部添加小图片

文章插图
实现步骤: 将文字的转化为tring 。创建一个图片的 。将tring与拼接得到新的tring 。将新的tring赋给的属性即可 。代码实现:
- (NSAttributedString *)attatchImage: (UIImage *)image atLastOfString: (NSString *)string{//1.现将内容string转化为NSMutableAttributedStringNSMutableAttributedString *attributedMString = [[NSMutableAttributedString alloc] initWithString:string];//2.获取图片的NSTextAttachmentNSTextAttachment *attach = [[NSTextAttachment alloc] init];attach.image = image;//在这里如果不设置attatchment的bounds,就有可能造成添加的图片的位置高于文字或者大小与文字的大小不统一的情况 。不过还是具体问题具体分析,在这里只是告诉各位图片的rect是可以更改的attach.bounds = CGRectMake(2, -2, 15, 15);//3.将图片的NSTextAttachment转化为imageStringNSAttributedString *imageString = [NSAttributedString attributedStringWithAttachment:attach];//4.合并NSMutableAttributedString和imageString[attributedMString appendAttributedString:imageString];//5. 将NSMutableAttributedString转化为NSAttributedString并返回return [[NSAttributedString alloc] initWithAttributedString:attributedMString];}
作为对比,笔者分别创建了单行和多行的,但是为了不使代码重复,单独写了一个方法来获得在末尾添加了图片的,而且通过这个方法,完全不用考虑屏幕适配或者最后一个字在当前行末尾的情况,因为会帮我们做好的 。
效果图:
【文本尾部添加小图片】文字末尾添加小图片
如此简单高效的方法真是相见恨晚有木有!