UILabel多行的情况下在最后的文本后面增加一个小图标

先看下设计需求:
UILabel多行的情况下在最后的文本后面增加一个小图标
文章图片
UILabel+image.png 在label的文本后面,需求是跟着一个小图标。
直接使用 NSAttributedString 实现,直接看代码。

// 实现图文混排的方法 - (NSAttributedString *) creatAttrStringWithText:(NSString *) text image:(UIImage *) image{// NSTextAttachment可以将图片转换为富文本内容 NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; attachment.image = image; // 通过NSTextAttachment创建富文本 // 图片的富文本 NSAttributedString *imageAttr = [NSAttributedString attributedStringWithAttachment:attachment]; NSMutableAttributedString *mutableImageAttr = [[NSMutableAttributedString alloc] initWithAttributedString:imageAttr]; [mutableImageAttr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:15] range:NSMakeRange(0, imageAttr.length)]; // 调整图片的位置,负数代表向下 [mutableImageAttr addAttribute:NSBaselineOffsetAttributeName value:@(-2) range:NSMakeRange(0, imageAttr.length)]; // 文字的富文本 NSAttributedString *textAttr = [[NSMutableAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]}]; NSMutableAttributedString *mutableAttr = [[NSMutableAttributedString alloc] init]; // 将图片、文字拼接 // 如果要求图片在文字的后面只需要交换下面两句的顺序 [mutableAttr appendAttributedString:textAttr]; [mutableAttr appendAttributedString:mutableImageAttr]; return [mutableAttr copy]; }

【UILabel多行的情况下在最后的文本后面增加一个小图标】事例:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 50, 200, 400)]; label.numberOfLines = 0; [self.view addSubview:label]; UIImage *image = [UIImage imageNamed:@"test.png"]; label.attributedText = [self creatAttrStringWithText:@"此外,只要能访问区块链,就可以访问存储的信息。允许进行安全的、分布式的存储,并访问存储结果,例如,为了进行完整性验证,又比如,检查一个产品的供应商是否具有安全标记,是不是产品的发起者。" image:image];

    推荐阅读