可以异步加载UILabel / UITextView的NSAttributesString(由HTML生成)中的图像(iOS 7+)吗?

时间:2015-03-11 10:57:34

标签: ios objective-c uilabel nsattributedstring

最近,我尝试实现富文本视图,以显示主题内容或回复(通常包括一些图像)等内容。我在UITableView中尝试过DTCoreText,但似乎有很多问题。

我刚刚发现自iOS 7以来,UITextView / UILabel开始支持NSAttributedText,但问题是所有图像都是同步加载的,它们会阻塞主线程。有没有办法可以异步加载它们?

示例代码:
https://gist.github.com/romaonthego/6672863

1 个答案:

答案 0 :(得分:1)

NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

在此行中,您应先将数据下载,然后再将其设置为属性字符串。

dispatch_async(dispatch_get_global_queue(0, 0), ^{
    // Load Data Here.
    dispatch_async(dispatch_get_main_queue(), ^{
        // Create NSAttributedString and set data to it.
    });
});