• 记录一下UILabel加载富文本 iOS


    一般情况下我们都习惯用webview加载富文本。但是webview比较消耗内存。然后发现其实本身可以用uilabel加载,性能还不错就记录下~~

    核心方法下面两个

    -(NSMutableAttributedString *)setAttributedString:(NSString *)str
    {
    //如果有换行,把
    替换成<br/>
    //如果有需要把换行加上
     str = [str stringByReplacingOccurrencesOfString:@"
    " withString:@"<br/>"];
    //设置HTML图片的宽度
     str = [NSString stringWithFormat:@"<head><style>img{%f !important;height:auto}</style></head>%@",[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];
        [paragraphStyle setLineSpacing:5];
     [htmlString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [htmlString length])];
        return htmlString;
    }
    
    //计算html字符串高度
    -(CGFloat )getHTMLHeightByStr:(NSString *)str
    {
      str = [str stringByReplacingOccurrencesOfString:@"
    " withString:@"<br/>"];
      str = [NSString stringWithFormat:@"<head><style>img{%f !important;height:auto}</style></head>%@",[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 textSize = [htmlString boundingRectWithSize:(CGSize){kScreenWidth - 30, CGFLOAT_MAX} options:NSStringDrawingUsesLineFragmentOrigin context:nil].size;
        return textSize.height ;
    }
  • 相关阅读:
    thread.md
    Linux系统编程手册_第6章_进程
    第一章.md
    开始.md
    粘滞位
    端口转发和端口映射
    virtualbox.md
    第6章.md
    JsparentNode、parentElement,childNodes、children 它们有什么区别呢?
    Sql注入防小试
  • 原文地址:https://www.cnblogs.com/110-913-1025/p/11946987.html
Copyright © 2020-2023  润新知