- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
显示大量 RichText(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我意识到一个问题会导致平滑滚动。为站点提供 native 应用程序的想法是,它比使用简单的 UIWebView 查看站点移动主题更好。如果应用程序在滚动时滞后并且不稳定,那更糟而不是更好(也因为我需要显示隐藏 webview 的图像,就像他建议的那样行不通)。此外,UIWebView 需要在主线程上创建,否则它们会中断。
回到 UIWebView?恼人的是,除了做一个可悲的作弊,(就像在 iFans app 中)你只显示文本然后如果他们点击它一个 UIWebView 加载所有漂亮的图像等等......,唯一的选择似乎是做我想想 TapaTalk 应用程序,并将整个线程 View 作为 UIWebView。这不是太坏的,因为它可能会有很好的性能,并且允许我添加用户控制的主题等。但我发现在网站中使用 UIWebView 的想法 native 令人反感的应用。
有没有人有创建基于网络的应用程序的经验,例如 可能 facebook 客户端、论坛应用程序或必须显示网站内容的新站点应用程序(我真的不算推特客户端,因为它只需要处理每个帖子的少量文本和链接)。或者关于在 iOS 应用程序中显示 RichText 内容的最佳方式的任何想法?
任何想法都必须处理很多问题:
以防万一实际问题不是很清楚,我会总结一下:
“为论坛客户端应用程序显示大量 RichText(HTML 格式)内容的最佳方式是什么”
最佳答案
如果我没看错,您希望给定主题的论坛帖子是 UITableView 的单元格,并且单元格需要丰富的格式吗?
假设这是正确的,我想每个帖子都会占据很多屏幕(大单元格高度)。在这种情况下,将 UIWebView 作为 subview 在性能方面可能并不像您想象的那么糟糕。 UITableView 重用单元格,所以实际上只有可见的单元格需要加载到内存中。
我还假设您可以通过 API 访问论坛,对吗?在这种情况下,您应该能够在加载 View 之前立即预加载数据,并且 UIWebViews 将仅用于格式化。当您将 HTMLString 加载到您的 UIWebView 时,您甚至可以从您的应用程序包中加载一个 CSS 文件,这样您就不会每次都从服务器加载它。
综上所述,如果您确实有很多并发可见的单元格,则情况可能会有所不同,我可能会考虑仅在 UITableView 索引中显示纯文本并仅在用户点击单元格时显示丰富的格式查看单个帖子。从设计的角度来看,这也可能更好,因为屏幕上有大量不同格式的单元格可能最终看起来有点草率。
此外,这可能是显而易见的(特别是因为您似乎既注重性能又注重设计)但请不要将 UIWebView 用于 UI 控件。每当我看到 UIWebView 选项卡栏或假导航栏时,我都会畏缩(ack,Netflix)。但是对于格式化,如果您从服务器加载大量动态内容,很多时候它是唯一的飞行方式。
关于iphone - 显示大量 RichText : Choosing the best option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626294/
我正在创建教师表格,我想从图库中选择图片作为个人资料,我想更改右侧“选择图片按钮”的标签和位置,以及左侧同一输入框中的“选择图片”标签和标签旁边“请选择个人资料图片”我正在使用 angular 和 b
我有一个 anchor a.add_input链接,负责向当前文档添加(通过jQuery)file输入字段。输入将附加到其他文件输入字段的列表中(OneToMany 关系上下文中的多个文件上传)。 最
Apple 的版本编辑器帮助只有两个主题,“将文件的版本与时间线进行比较”和“将文件的版本与跳转栏进行比较”,这两个主题都没有描述退出或向当前文件添加特定更改的方法文件的版本,或从正在比较的对创建 m
现在,当我选择要上传的图片时,提交表单效果很好。但是即使没有选择任何图像,我也尝试提交相同的表格... Controller function create(){ $this->dat
这个问题在这里已经有了答案: How does this CASE expression reach the ELSE clause? (3 个回答) 7年前关闭。 当我将随机整数生成与 CHOOSE
我希望我的下拉列表显示第一个值:“-选择汽车-” 我这样成功了: protected void ddl1_DataBound(object sender, EventArgs e) { Co
让我们以项目 A 及其依赖项(包括传递依赖项)为例。如果查看依赖关系树,我会看到在一条路径的末尾有 slf4j-api:1.6.4,在另一条路径的末尾有 slf4j:1.6.1。 我必须选择哪个依赖项
请考虑我的旧脚本: CHOOSE.EXE /c:ynq /t:n,7 " until 7 seconds press Y to smooth details " set "LowPassFilter=
MyBatis 中动态语句 choose-when-otherwise 类似于 Java 中的 switch-case-default 语句。由于 MyBatis 并没有为 if 提供对应的 else
我想使用相同的脚本来处理存储在不同位置的许多文本文件中的数据,然后将输出保存到另一个唯一的位置,而不必每次都修改我的脚本。我输入数据使用: data <- read.table(file.choose
作为作业的一部分,我正在使用 Scalacheck 来查找缺陷。令人难以置信的是,我被卡住了,因为它正在生成一对非零整数。 从我的 IntelliJ 工作表中,逐字逐句: import org.sca
我的数据如下所示: service,rating_1,rating_2,rating_3,rating_4,rating_5 renew_patent,0,0,1,2,11 apply_benefit
我在 Linux Mint 中安装了 mxnet。我使用 anaconda 来运行 python 3.5。我按照说明进行操作,成功安装了。 mxnet 和 anaconda 都是最新版本。但是,当我尝
有没有办法让file.choose()后弹出的对话窗口运行以显示自定义标题,类似于 X <- menu(files, graphics=TRUE, title="Choose file X") ? 现
我正在尝试使用 CHOOSE 函数从表中返回几个不相邻的列,based on this answer ,但结果看起来不正确。 模拟下表中的相同问题,发现结果是一样的。 可能会发生什么?这个公式与我的版
我必须承担一个项目,制作一个视频聊天应用程序。 该视频必须从一个位置进行流式传输,并且可供全局各地的多人观看。性能确实是一个问题,超过 2-3 秒的延迟是 Not Acceptable 。 据我所知,
您好,我的项目需要我使用 WebView 和相机。我在 HTML 中实现了代码,按下“选择文件”按钮后, WebView 将让我选择是使用相机捕获照片还是从文件管理器上传文件。但我不需要文件选项,我只
我想同时做接下来的事情: 在集合末尾添加新项目(经常) 从集合开始时删除项目(或少数项目)(经常) 从集合中间删除项目(或少数项目)(很少,通过迭代所有项目发生) 问题:哪个并发收集会给我最好的性能。
我使用 Bootstrap 框架创建了一个响应不同浏览器(台式机、平板电脑、移动设备)的在线网络应用程序。之后,我将网络应用程序转换为移动网络应用程序并在 Google Play 商店上发布,并在我的
经过大量阅读和实验后,似乎我需要 PRIMARY 搜索强度,但订购 TERTIARY 或 IDENTICAL。 主要问题:使用 H2(或任何其他数据库)可以实现吗? 次要问题:我是这里唯一的一个还是你
我是一名优秀的程序员,十分优秀!