UIWebView以更高效的方式降低加载时​​间

时间:2013-03-08 05:33:00

标签: ios objective-c cocoa-touch uiwebview

我正在下载乘法htmls并将其作为字符串保存在NSArray中。 然后我使用3 UIWebViews加载内容。用户始终会看到一个UIWebView,另外两个UIWebViews在后​​台加载:

[_firstWebView loadHTMLString:nextHtml.body baseURL:nil];

当用户在UIWebViews之间移动时,如果他一次移动2 UIWebViews,我仍然可以看到1-2秒的缓慢加载时间。我想过去5甚至7 UIWebViews,但我担心它会严重影响内存使用量。

我的另一个想法是将内容保存在本地NSData,然后用

加载
[web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]]; 

但是我不确定这会给我带来任何改善还是会得到它?

另一个想法是,我的应用程序中的某些内容(屏幕上的动画)正在减慢加载时间,所以也许我应该loadHTMLString:nextHtml在另一个线程上?

由于

1 个答案:

答案 0 :(得分:2)

最近我做了一些关于在后台将内容加载到UIWebView的研究。我发现即使成功的loadRequest也没有效果,而webview是不可见的,而不是作为子视图添加到某个地方。

但是如果我在加载之前对视图进行了一些访问,它就会开始显示在后台加载的内容。

所以我首先隐藏视图,然后在其中加载内容,然后在显示给用户之前再次显示视图:

在加载方法中:

// make some access to view to reflect content changes
self.webView.hidden = YES;

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:someurl]]];

当用户切换到webview时:

// make view visible again
self.webView.hidden = NO;

这种方法对我有用。希望它也指出你正确的方向。