我的应用有一个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代码。
答案 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;