今天要做一个图文混排的页面,在自定义的很多cell
里面有一个需要动态高度的加载HTML文本的cell
,做完之后在这里记录一下
- 初始化
UILabel
_contentLabel = [[UILabel alloc] init];
_contentLabel.numberOfLines = 0;
NSString *str = [NSString stringWithFormat:@"本教材采用以结构为纲,寓结构、功能于情景之中的编写原则,力求为学生以后的学习打下比较坚实的语言基础。在内容的编写与选取方面,突出实用性,力求场景的真实自然。本教材内容以学生的学习和生活为主,选取了校园及其他与学生日常生活密切相关的场景,以帮助学生尽快适应学校及日常生活。课文全部采用对话体,以满足学生用汉语进行交际的基本需求。<img style=\"width: %f; height: auto;\" src = \"https://gimg2.baidu.com/image_search/src=http%%3A%%2F%%2Fimg3.doubanio.com%%2Fview%%2Fgroup_topic%%2Fl%%2Fpublic%%2Fp458058160.jpg&refer=http%%3A%%2F%%2Fimg3.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1656643727&t=e23faa2706d62506d4198fe10a727be2\"/>我们希望通过本书的学习,学习者可以打下良好而坚实的基础,积蓄充足的能量和后劲,实现在汉语的天空中自由飞翔的目标。",MainScreenWidth-30];
_contentLabel.attributedText = [self getHtmlStringWithString:str];
[self.contentView addSubview:_contentLabel];
- 为了方便简单封装了一下
- (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
就可以了