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

先看下设计需求:

UILabel多行的情况下在最后的文本后面增加一个小图标_第1张图片
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 *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];

你可能感兴趣的:(UILabel多行的情况下在最后的文本后面增加一个小图标)