ios 使用富文本加载HTML

富文本设置

  1. \n替换
  2. 图片宽度设置
  3. 行间距设置
-(NSMutableAttributedString *)setAttributedString:(NSString *)str
{
//如果有换行,把\n替换成
//如果有需要把换行加上 str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@"
"]; //设置HTML图片的宽度 str = [NSString stringWithFormat:@"%@",[UIScreen mainScreen].bounds.size.width,str]; NSMutableAttributedString *htmlString =[[NSMutableAttributedString alloc] initWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute:[NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:NULL error:nil]; //设置富文本字的大小 [htmlString addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} range:NSMakeRange(0, htmlString.length)]; //设置行间距 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; [paragraphStyle1 setLineSpacing:5]; [htmlString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [htmlString length])]; return htmlString; }

获取富文本的高度

//计算html字符串高度
-(CGFloat )getHTMLHeightByStr:(NSString *)str
{
  str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@"
"]; str = [NSString stringWithFormat:@"%@",[UIScreen mainScreen].bounds.size.width,str]; NSMutableAttributedString *htmlString =[[NSMutableAttributedString alloc] initWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute:[NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:NULL error:nil]; [htmlString addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} range:NSMakeRange(0, htmlString.length)]; //设置行间距 NSMutableParagraphStyle *paragraphStyle1 = [[NSMutableParagraphStyle alloc] init]; [paragraphStyle1 setLineSpacing:5]; [htmlString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, [htmlString length])]; CGSize contextSize = [htmlString boundingRectWithSize:(CGSize){[UIScreen mainScreen].bounds.size.width), CGFLOAT_MAX} options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size; return contextSize.height ; }

你可能感兴趣的:(ios 使用富文本加载HTML)