我正在下载乘法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
在另一个线程上?
由于
答案 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;
这种方法对我有用。希望它也指出你正确的方向。