美文网首页
ios html字符串转换attributedString注意事

ios html字符串转换attributedString注意事

作者: 小明小明小明小小明 | 来源:发表于2017-09-19 15:14 被阅读275次

    今天测试突然告诉我ios这边页面切换的时候有闪屏的现象。排查了很久才发现是html转换attributedString引起的。html转换attributedString的代码如下:

    NSMutableAttributedString*attributedString = [[NSMutableAttributedStringalloc]initWithData:[htmlstr dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nilerror:nil];

    这个代码是没有问题,网上很多。原因是这个转换操作应该是耗时操作,虽然时间很短,但是是阻塞了主线程的。 导致界面没有马上加载出来。后面转换完之后再加载出来了导致闪屏。

    修改如下:

    dispatch_async(dispatch_queue_create(0,0), ^{

    //耗时操作。异步进行转换完之后在主线程刷新ui

    NSMutableAttributedString*attributedString = [[NSMutableAttributedStringalloc]initWithData:[htmlstr dataUsingEncoding:NSUnicodeStringEncoding]options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType}documentAttributes:nilerror:nil];

    dispatch_async(dispatch_get_main_queue(), ^{

    detailLabel.attributedText= attributedString;

    });

    });

    应该将这个操作放在子线程中执行。转换完之后再回主线程刷新ui。闪屏的问题就解决了。


    第一次写简书 排版感觉很不习惯。大家见谅。


    相关文章

      网友评论

          本文标题:ios html字符串转换attributedString注意事

          本文链接:https://www.haomeiwen.com/subject/ctpoxttx.html