显示很多RichText:select最佳选项

显示大量 RichText(HTML格式)的最佳方式是什么

目前我正在为一个论坛的应用程序工作。 正如你所期望的网站上的post有很多的HTML格式,列表,图像粗体文本 ,彩色文字等…

现在有几个选项我可以想到(非理想的,如果你想在其他任何选项发表评论)请:

  • 自定义单元格使用NSAttributedString + HTML + DTAttributedTextView每个职位?

    问题:我在其他地方使用了应用程序中的NSAttributedString + HTML类别,并且它不那么理想,创build一个NSAttributedString似乎相当昂贵(很慢),即使是less量的。 虽然DTAttributedTextView支持IMG html标签(大多数标签),但它不支持远程加载图像,除非您在img中指定它们的宽度和高度,否则对于10个以上的post可能是整篇文章的长度将是可怕的+标签。 而对于IMG标签可能是一个笑脸(10 * 10)或截图(640 * 960)的论坛,没有办法预测这一点。 (因为编写这个NSAttributedString + HTML,现在被重命名为DTCoreText ,已经添加了对<img>标签的全面支持,并且大大改进了!)

  • 自定义单元格的UIWebView在他们的每个职位?

    这一个我考虑了一段时间,但是当阅读这个博客文章,我意识到一个问题,将导致, 平滑滚动 。 拥有本地应用程序的想法是,它是更好的,然后使用一个简单的UIWebView来查看网站的移动主题。 如果应用程序滞后,而滚动,而滚动, 更糟糕的不好 (也因为我需要显示图像隐藏webview的,他build议不会工作)。 此外,UIWebView的需要在主线程上创build或他们中断。

  • 回到UIWebView? 除了做一个可悲的作弊,(如在iFans应用程序 ),你只显示文本,然后如果他们点击它的UIWebView加载所有漂亮的图像等…剩下的唯一select似乎是做我的想法TapaTalk应用程序确实具有整个线程视图作为UIWebView。 这不是糟糕,因为它可能会有相当不错的performance,并将允许我可能添加用户控制的主题等..但我觉得在网站本地应用程序使用UIWebView的想法。

有没有人有任何经验,创造networking供电的应用程序,如可能是一个脸书客户端,论坛应用程序,或新的网站应用程序,必须显示网站的内容(我不算一个叽叽喳喳客户端,因为它只需要处理文本&每个职位less量链接)。 或者在iOS应用程序中显示RichText内容的最佳方式的任何想法?

任何想法都必须处理这个问题:

  • 多彩色的文字。
  • 右,左和中间alignment的文本。
  • 图像(可变大小)。
  • 加粗字体。
  • 不同大小和字体的文本。
  • 强调文本。
  • YouTubevideo。
  • HTML表格。

以防万一实际问题不是很清楚,我总结一下:

为论坛客户端应用程序显示大量RichText(HTML格式)内容的最佳方式是什么

所以,如果我正在阅读这个权利,你想要一个给定的主题的论坛post是一个UITableView单元格和细胞需要丰富的格式?

假设这是正确的,我想每个post会占用大量的屏幕(大单元格高度)。 在这种情况下,将UIWebView作为子视图可​​能并不像您想象的那么糟糕。 UITableView重用了单元格,所以实际上只有可见单元格需要加载到内存中。

我也假设你可以通过API访问论坛,对吧? 在这种情况下,您应该能够在加载视图之前立即预加载数据,并且UIWebView仅用于格式化。 当你将HTMLString加载到你的UIWebView中时,你甚至可以从你的应用包中加载一个CSS文件,所以你不会每次从服务器加载。

所有说的,如果你有很多同时可见的单元格,它可能是一个不同的故事,我可能会考虑只显示纯文本的UITableView索引,并显示丰富的格式,只有当用户点击单元格来查看单一职位。 从deviseangular度来看,这样做也可能会更好,因为在屏幕上显示大量不同格式的单元格可能最终会显得有点草率。

此外,这可能是显而易见的(特别是因为你似乎是性能和devise意识),但请不要使用UIWebView的UI控件。 任何时候我看到一个UIWebView标签栏或假导航栏我畏缩(ack,Netflix)。 对于格式化,很多时候,如果从服务器加载大量dynamic内容,这是唯一的方法。

NSAttributedString + HTML已经支持图片的延迟加载。 看到演示如何做到这一点。 这是相当快,但你想要parsing的HTML不是在屏幕上的内容。

它主要取决于你想要实现的UI。 NSAS + HTML是用于控制HTML质量的情况(也就是你自己生成的)。 在那里它提供了对视图层次的前所未有的控制水平,因为您可以embedded自己的自定义视图来显示图像。

在其他情况下,你不能确定HTML的质量,你必须使用UIWebView,并解决所有的限制,其中一个是,它需要大量的内存,并显示缓慢的内容。 另外UIWebView不是线程安全的(因为WebKit不是)。