我有一个包含标签栏的原生iOS应用。每个选项卡的视图控制器都包含一个UIWebView。当用户在选项卡之间切换时,我在相应的Web视图中加载HTML。 HTML完全缓存在设备上。以下是我将HTML提供给UIWebView的方法:
[self.webView loadHTMLString:htmlString baseURL:baseUrl];
baseUrl是指向所有资产所在目录的文件URL。
这在在线和离线模式下效果很好,但是UIWebView需要时间来解析和呈现HTML。结果,当在标签之间切换时,用户看到白色背景的短暂闪烁。我想删除它,因为用户能够告诉UI不是本机的(本机UI立即呈现)。
我正在考虑在完成HTML渲染并将其缓存在内存中之后获取UIWebView的屏幕截图。用户下次导航到该Web视图时,应用程序会在UIWebView在后台呈现HTML时显示屏幕截图。最后,该应用程序使用实际的UIWebView交换屏幕截图并获取新的屏幕截图。这与Google Chrome应用的工作方式类似。
有没有人知道这个问题的更好解决方案?
答案 0 :(得分:0)
取决于您如何呈现该网络视图。我从你的描述中不确定你是怎么做到的,但是既然你正在谈论一眨眼的白色背景,我会假设你有一个带有加载html的web视图的情况然后你把它切换到另一个HTML。该案例的解决方案是:
这样你就可以在旧的和新的html之间进行即时切换,但是用户将会等待,你决定如何处理它。例如,您可以使用UIActivityIndicatorView。
答案 1 :(得分:0)
当webViewDidFinishLoad:
被调用时,您可以执行任意数量的操作,使Web视图可见,删除您在webview上的内容等等...