渲染任意大的NSAttributedString

时间:2012-11-14 19:59:08

标签: ios ios6 uitextview core-text nsattributedstring

我需要渲染一个(任意大的)NSAttributedString,在这种情况下,来自(任意长的)telnet会话的ANSI色文本。文本无需内联编辑。我已经探索了几个选项:

  • UITextView似乎具有迄今为止最佳的性能,而且由于我的目标是iOS 6,因此使用归因字符串非常容易。但是,随着更多文本的添加,textview变得越来越慢,因为每当我调用setAttributedString:并阻止UI时它就会遇到HTML DOM解析器。
  • 我尝试了一些核心文本渲染框架,TTTAttributedLabelOHAttributedLabel,随着文本的增加,这些框架也逐渐变慢。公平地说,他们的标签可能不适合这类事情!
  • UIWebView gag )在轮换方面存在一些问题,并保持文本大小和框架正确,但我想我可以解决它。我可以将我的属性字符串转换为HTML并使用JavaScript在接收时附加(注入)新文本。这里出色的表现令人惊讶。
  • 一位朋友建议我将用户当前的滚动位置视为一个较大文档的视口,并且(可能带有核心文本)仅渲染我的属性字符串的可见部分。我担心这会如何影响滚动性能。

所以我转向你,勇敢的互联网。独立开发者的想法? webview是我最好的选择吗?

1 个答案:

答案 0 :(得分:0)

您可以使用UITableView并将NSAttributedString拆分为一个子串数组,每个子串都适合单元格的标签宽度。表视图的数据源将索引到子字符串数组中,以确定应在每个单元格中放置原始字符串的哪一行。

相关问题