iOS开发之UILabel加载HTML文本

今天要做一个图文混排的页面,在自定义的很多cell里面有一个需要动态高度的加载HTML文本的cell,做完之后在这里记录一下

  1. 初始化UILabel
  _contentLabel = [[UILabel alloc] init];
  _contentLabel.numberOfLines = 0;
  NSString *str = [NSString stringWithFormat:@"本教材采用以结构为纲,寓结构、功能于情景之中的编写原则,力求为学生以后的学习打下比较坚实的语言基础。在内容的编写与选取方面,突出实用性,力求场景的真实自然。本教材内容以学生的学习和生活为主,选取了校园及其他与学生日常生活密切相关的场景,以帮助学生尽快适应学校及日常生活。课文全部采用对话体,以满足学生用汉语进行交际的基本需求。我们希望通过本书的学习,学习者可以打下良好而坚实的基础,积蓄充足的能量和后劲,实现在汉语的天空中自由飞翔的目标。",MainScreenWidth-30];
  _contentLabel.attributedText = [self getHtmlStringWithString:str];
  [self.contentView addSubview:_contentLabel];
  1. 为了方便简单封装了一下
- (NSMutableAttributedString *)getHtmlStringWithString:(NSString *)string {
    NSDictionary *options = @{NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType,
                              NSCharacterEncodingDocumentAttribute : @(NSUTF8StringEncoding)};
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];
    // 设置段落格式
    NSMutableParagraphStyle *para = [[NSMutableParagraphStyle alloc] init];
    para.lineSpacing = 8;
    [attStr addAttribute:NSParagraphStyleAttributeName value:para range:NSMakeRange(0, attStr.length)];
    // 设置文本的Font
    [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, attStr.length)];
    [attStr addAttribute:NSForegroundColorAttributeName value:ColorFromRGB(103, 103, 103, 1.0) range:NSMakeRange(0, attStr.length)];
    return attStr;
}

加载HTML文本的地方调用该方法拿到我们需要的富文本赋值给label就可以了

你可能感兴趣的:(iOS开发之UILabel加载HTML文本)