我想要做的是在每次更改/加載webview的內容時將UIWebView轉換爲UIImage。如何正確地將UIWebView與Chaning內容轉換爲UIImages
下面是代碼:
- (void)viewDidLoad {
[self.tmpWebView loadHTMLString:[NSString stringWithFormat:@"Some %i HTML", 0,baseURL:nil];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
if (webView==tmpWebView && pngCount<[self.arrayOfHtmlContent count]) {
UIGraphicsBeginImageContext(webView.frame.size);
{
[webView.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(10, 10+((pngCount==1)?0:(pngCount-1)*100), 400, 200);
[imageView setBackgroundColor:[UIColor redColor]];
[_someScrollView addSubview:imageView];
//NSString *pngPath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat: @"Documents/Test-%i.png",pngCount]];
//[UIImagePNGRepresentation(image) writeToFile:pngPath atomically:YES];
}
UIGraphicsEndImageContext();
[self performSelector:@selector(loadWebViewWith:) withObject:[[NSArray alloc] initWithObjects:webView, [[NSNumber alloc] initWithInt:pngCount], nil ] afterDelay:0.3];//DELAY INCREASING DOES NOT CHANGE ANYTHING
pngCount++;
//NSLog(@"Finish%i: %@",(pngCount-1),[webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"]);
}
}
- (void) loadWebViewWith:(NSArray*)array {
[(UIWebView*)[array objectAtIndex:0] loadHTMLString:[NSString stringWithFormat:@"Another %i HTML", [[array objectAtIndex:1] intValue]] baseURL:nil];
}
我不知道爲什麼,但一些創建UIImages是重複的。這可能是因爲線程,並沒有完成轉換爲UIImage,但延遲開始加載webview的新內容(即使我將它設置爲5secs)不會改變任何東西。
有人可以解釋我爲什麼得到重複UIImages?
謝謝回覆。爲什麼他們有多個框架,用於測試我設置webview的內容相同的簡單html? – sag
在這種情況下,我不知道你的問題的原因。 – lammert