Swift:UIWebView加载旧内容

时间:2015-10-23 02:28:29

标签: ios iphone swift uiwebview

我的应用有一个ViewController,一个UIWebView和4个UIImageView

我的应用中的控制流程:

- >从相机捕获图像并存储到UIImage变量中,这发生在didFinishPickingMediaWithInfo函数中。对图像进行一些处理。

- >从didFinishPickingMediaWithInfo函数,使用内联html / css代码加载UIWebView,即

webview.hidden = false
WebView.loadHTMLString(htmlString, baseURL: nil) 

- >将上述html加载到UIWebView后,调用委托函数webViewDidFinishLoad。从webViewDidFinishLoad,使用以下代码将UIWebView中加载的任何内容的快照拍摄到图像中:

var image:UIImage?
  autoreleasepool{
            UIGraphicsBeginImageContextWithOptions(WebView.frame.size, false, 1.0)
            WebView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
            image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
        }

- >将捕获的图像存储到UIImage变量中。

- >将另外一个不同的html / css代码加载到同一个UIWebView中(我仍然在webViewDidFinishLoad函数中):html加载代码与上面相同,即

WebView.loadHTMLString(htmlString1, baseURL: nil)

- >因为在上面的步骤中加载了新的html代码,再次调用webViewDidFinishLoad,我做同样的事情,即将UIWebView内容的快照转换为UIImage变量并加载新的html模式

- >我这样做了4次,最后我在4个UIImage变量中捕获了4个图像。我将所有这4个图像加载到我的故事板上的4个UIImageView中。

- >然后我解雇了imagepicker

imagePicker.dismissViewControllerAnimated(true, completion: nil)

这是我最后看到的问题:

- >有时,Image1与图像2相同,有时所有图像都相同。这是随机发生的。我确信所有这4张图片都应该是唯一的。因为我在每一步都加载了不同的HTML代码。

  • 上面的序列中我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试一些事情:

1)不要在webViewDidFinishLoad中重新加载webView。而是等到主线程上的下一个运行循环(允许iOS完全完成)。在目标C中,我的代码看起来像

dispatch_async (dispatch_get_main_queue(), ^{
    // call method to load new html
});

2)我在调用webViewDidFinishLoad时没有刷新webView的问题。我通过调整webView框架解决了这个问题。高飞,是的。这是在iOS 6中,所以我不知道它是否会产生任何影响或者会影响你正在做的事情。

[webView loadHTMLString: html baseURL: nil];

// Play with frame to fix refresh problem
CGRect frame = webView.frame;
webView.frame = CGRectZero;
webView.frame = frame;