webView导致tableview滞后
Posted
技术标签:
【中文标题】webView导致tableview滞后【英文标题】:webView causing lag in tableview 【发布时间】:2015-12-10 12:35:10 【问题描述】:我正在做一个项目。我已经实现了可扩展单元格,我有一些关于单元格的信息,当我单击它时,它会展开并显示描述。
我以UIWebView
加载描述,因为我从JSON
以html
格式获取它。
我遇到的问题是 UITableView
中的滚动滞后,我 99% 确定是 UIWebView
导致问题,因为我有其他表格视图以及不可扩展的单元格,而且他们重新滚动一切顺利。
我想我可以通过不让表格在开始时加载 html
内容来解决问题,只在我选择的每个单元格的 Didselect 方法上加载它。
但是我很难做到这一点。无论如何我只能为 1 个特定单元格加载UIWebView
(在这种情况下只有我单击的单元格)。
任何帮助表示赞赏。
如果您认为还有其他方法可以解决此问题,请随时提出建议。
提前致谢
PS:我在youtube
中查看了swift
的可扩展单元格教程,结果大致相同。
【问题讨论】:
是否可以将您的内容加载为属性字符串?因为 WebView 在滚动时总是很慢。另一个想法是,您加载您的内容,从您的内容制作屏幕截图,并使用图像而不是 WebView。 我需要链接是可点击的,文本不应该是可编辑的,你只能查看它。 这仍然可以使用属性字符串:***.com/questions/21629784/… 【参考方案1】:dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
//Background Thread
NSData* data = [NSData dataWithContentsOfURL:@"YOUR URL"];
dispatch_async(dispatch_get_main_queue(), ^(void)
//Run UI Updates
[mWebView loadData:data MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil];
);
);
【讨论】:
1.这不是 Swift,而是它的 ObjC。 2. 请编辑答案,而不是创建新答案。 @derdida 你需要哪个版本的swift?【参考方案2】:使用 GCD,它将在后台进行 UIWebview 加载过程,并在加载完成时加载 UIWebview
【讨论】:
我使用 GCD ,但这不是造成整个问题的过程,内容加载并停留在 uiwebview 导致滞后。我需要它为空并仅在单击单元格时加载。 在 didSelectRowAtIndexPath 中在单元格子视图中添加 UIWebview 和 loadURLRequest 并显示活动直到完全加载【参考方案3】:好吧,伙计们 vaibby 是对的。感谢大家的回复。
我使用了 GCD,但在错误的地方调用它。 只是想让您知道问题已解决。 我所做的第一步是缓存 UItableView 的图像。 作为第二步也是非常重要的一步,我将 Async 库实现到我的项目中,并在 cellForRowAtIndexPath 函数中使用它来调用 Async.background 中的 webView(因此它在后台线程中绘制 UIwebView),现在滚动正在工作应该的。
【讨论】:
以上是关于webView导致tableview滞后的主要内容,如果未能解决你的问题,请参考以下文章