2011-07-08 52 views
18

什么是显示大量的富文本的(HTML格式)显示大量富文本:选择最好的选择

在我工作的一个论坛的应用目前最好的办法。正如你所期望的网站上的帖子有很多的HTML格式,列表,图片加粗文字,彩色文字等...

现在有几个选项,我能想到的(非他们的理想,请,如果你想到的任何其他选项张贴在他们的意见):使用NSAttributedString+HTML + DTAttributedTextView每个岗位

  • 定制单元?

    问题:我在应用程序的其他地方使用了NSAttributedString + HTML类别,它不太理想,创建一个NSAttributedString似乎相当昂贵(很慢),即使数量很少。 对于10+的职位每一个都可以是整篇文章的长度将是可怕的 +虽然DTAttributedTextView支持IMG HTML标记(一个最标签),除非你指定的宽度和高度,它不支持图像的远程加载img标签。而对于一个论坛,一个IMG标签可以是笑脸(10 * 10)或截屏(640×960),没有办法预测。 (因为写这篇NSAttributedString + HTML,现在更名为DTCoreText,增加了全面支持<img>标签,大大提高了!)

  • 定制单元为每个岗位在其中一个UIWebView?

    这一个我认为是相当长一段时间,但是阅读this blog post当我意识到一个问题,会导致,平滑滚动。有一个网站的本地应用程序的想法是,它是更好然后用一个简单的UIWebView来查看网站的移动主题。如果应用滞后和不畅滚动时即糟糕没有更好的(也因为我需要显示隐藏图像的WebView像他建议是行不通的)。此外,UIWebView需要在主线程上创建,否则会中断。

  • 回到UIWebView的? 烦人的除了做一个可怜的作弊,(如在iFans app),你只显示文本,然后如果他们点击它一个UIWebView加载所有漂亮的图像等,剩下的唯一选择似乎是做我的认为TapaTalk应用程序确实具有整个线程视图作为UIWebView。这是不是太糟糕,因为它很可能有相当不错的性能,可以让我有可能增加用户控制的主题等。但我发现在网站本地应用排斥使用一个UIWebView的想法。

没有人有创建Web应用程序供电的任何经验,像也许一个Facebook客户端,论坛的应用程序,或新的网站应用程序,它不得不从网站上显示的内容(我真的不指望一个Twitter客户端因为它只需处理每个帖子少量文本链接&)。或者有关在iOS应用中显示RichText内容的最佳方式的任何想法?

任何想法的必须处理很多:

  • 多色的文本。
  • 右,左&居中对齐的文本。
  • 图片(可变大小)。
  • 粗体文本。
  • 不同大小的文字&字体。
  • 强调文字。
  • YouTube视频。
  • HTML表格。

万一实际问题不是很清楚了这一切,我会总结一下:

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

回答

3

因此,如果我正在阅读此权限,您希望某个主题的论坛帖子是UITableView的单元格,并且这些单元格需要丰富的格式设置?

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

我还假设你能够通过API访问论坛,对吧?在这种情况下,您应该能够在加载视图之前立即预加载数据,并且UIWebView仅用于格式化。当你将HTMLString加载到你的UIWebView中时,你甚至可以从你的应用包中加载一个CSS文件,所以你不会每次都从服务器加载它。如果你确实有很多同时可见的单元格,它可能是一个不同的故事,我可能会考虑只显示UITableView索引中的纯文本,并显示丰富的格式,只有当用户点击细胞查看单个帖子。从设计角度来看,这可能也会更好,因为在屏幕上显示大量不同格式的单元格可能最终会显得有点草率。另外,这可能是显而易见的(特别是因为您似乎既注重性能又注重设计),但请不要将UIWebView用于UI控件。任何时候我看到一个UIWebView标签栏或虚假的导航栏我都会畏缩(ack,Netflix)。不过,对于格式化而言,如果从服务器加载大量动态内容,这是飞行的唯一方法。

+0

是的,我真的不喜欢假HMTLUIKit控件。感谢您的回答,在阅读您的评论后,我测试了在表格视图单元格中有一个UIWebView。虽然它运行得很好,但每次调用时都必须重新加载它的内容,并且在滚动时非常干燥。所以我可能会使用UIWebView作为丰富的文本(尽管使用javascript,自定义缓存策略和自定义上下文菜单进行了自定义)。我真的希望苹果将OSX文本引擎带到iOS,并且支持完整的Rich Text编辑。 –

+0

我等了一会儿,看看是否有人在发布关于继承人体验之前发布过类似的应用程序,然后将其标记为已回答。 –

+0

经过几次测试后,我很抱歉地说** BY FAR **最佳性能的选项是UIWebView。 –

2

NSAttributedString + HTML已经支持延迟加载图像。看演示如何做到这一点。它速度相当快,但是您想要解析HTML中的内容而不是屏幕上的内容。

它主要取决于你想要达到的UI。 NSAS + HTML适用于您控制HTML质量的情况(即您自己生成它)。它可以让您对视图层次结构进行前所未有的控制,因为您可以嵌入自己的自定义视图来显示图像。

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