iphone – UIWebView到UIImage
发布时间:2020-12-14 19:54:03 所属栏目:百科 来源:网络整理
导读:我尝试使用此方法从UIWebView捕获图像,但图像仅包含屏幕的可见区域.如何捕获包含不可见区域的UIWebView的完整内容,即将整个网页合并为一个单独的图像? -(UIImage*)captureScreen:(UIView*) viewToCapture{ UIGraphicsBeginImageContext(viewToCapture.bound
我尝试使用此方法从UIWebView捕获图像,但图像仅包含屏幕的可见区域.如何捕获包含不可见区域的UIWebView的完整内容,即将整个网页合并为一个单独的图像?
-(UIImage*)captureScreen:(UIView*) viewToCapture{ UIGraphicsBeginImageContext(viewToCapture.bounds.size); [viewToCapture.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return viewImage; } 解决方法
编辑(来自
Vad的评论)
解决方案是打电话 webView.scalesPageToFit = YES; 在初始化中,和 [webView sizeToFit] 当页面完成加载. 您当前只捕获可见部分,因为您将图像上下文限制为可见部分.你应该把它限制在可用的范围内. UIView有一个scrollView属性,它有contentSize,告诉你滚动视图中Web视图的大小是多少.您可以使用该大小来设置图像上下文,如下所示: -(UIImage*)captureScreen:(UIView*) viewToCapture{ CGSize overallSize = overallSize; UIGraphicsBeginImageContext(viewToCapture.scrollView.contentSize); // Save the current bounds CGRect tmp = viewToCapture.bounds; viewToCapture.bounds = CGRectMake(0,overallSize.width,overallSize.height); // Wait for the view to finish loading. // This is not very nice,but it should work. A better approach would be // to use a delegate,and run the capturing on the did finish load event. while (viewToCapture.loading) { [NSThread sleepForTimeInterval:0.1]; } [viewToCapture.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // Restore the bounds viewToCapture.bounds = tmp; return viewImage; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |