我制作了UITableView
,其中每个单元格都包含UILabel
。输入是一些HTML字符串(如网站页面源),例如来自Example Domain:
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
但更大,超过4000个字符。
我想将这些HTML字符串转换为纯字符串,对于上面的示例,它将是:
示例域
该域名被建立用于文档中的说明性示例。您可以在不事先的示例中使用此域 协调或征求许可。
更多信息......
然后在UILabel
中显示它们。目前我正在使用这种方式:
NSData *htmlData = [htmlString dataUsingEncoding:NSUnicodeStringEncoding];
NSAttributedString *attrString = [[NSAttributedString alloc]
initWithData:HTMLData
options:@{
NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType
}
documentAttributes:nil
error:nil];
NSString *plainString = attrString.string;
这样可以正常工作,但性能非常糟糕,滚动浏览tableView时会导致闪烁。有没有更有效的方法来做到这一点?
答案 0 :(得分:0)
使用以下代码:
NSString * htmlString = ...;
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
UILabel * myLabel = [UILabel alloc] init];
myLabel.attributedText = attrStr;