5

我能够捕获整个网页的屏幕截图(包括屏幕外内容)。这在模拟器上运行良好,但在设备上却崩溃了。请帮助我,检查下面的代码(browserView是 UIWebview)。

UIImage *screenImage=[[UIImage alloc] init];
UIScrollView *browserScrollableView=[[UIScrollView alloc] init];
browserScrollableView=browserView.scrollView;   
UIGraphicsBeginImageContext(browserScrollableView.contentSize);
CGPoint savedContentOffset = browserScrollableView.contentOffset;
CGRect savedFrame = browserScrollableView.frame;

browserScrollableView.contentOffset = CGPointZero;
browserScrollableView.frame = CGRectMake(0, 0, browserScrollableView.contentSize.width, browserScrollableView.contentSize.height);

[browserScrollableView.layer renderInContext: UIGraphicsGetCurrentContext()];     
screenImage = UIGraphicsGetImageFromCurrentImageContext();

browserScrollableView.contentOffset = savedContentOffset;
browserScrollableView.frame = savedFrame;
UIGraphicsEndImageContext();

NSLog(@"Captured image size is %f X %f",screenImage.size.width,screenImage.size.height);

UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil);
4

3 回答 3

6
+ (UIImage*) captureWebView: (UIWebView*)webView {
    // capture webview
    UIImage *img = nil;
    UIGraphicsBeginImageContextWithOptions(webView.scrollView.contentSize, webView.scrollView.opaque, 0.0);
    {
        CGPoint savedContentOffset = webView.scrollView.contentOffset;
        CGRect savedFrame = webView.scrollView.frame;

        webView.scrollView.contentOffset = CGPointZero;
        webView.scrollView.frame = CGRectMake(0, 0, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height);
        [webView.scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
        img = UIGraphicsGetImageFromCurrentImageContext();

        webView.scrollView.contentOffset = savedContentOffset;
        webView.scrollView.frame = savedFrame;
    }
    UIGraphicsEndImageContext();
    return img;
}
于 2016-03-15T06:42:31.193 回答
3

我正在使用此功能及其对我的工作

-(UIImage*)captureScreen:(UIView*) viewToCapture
{
    UIGraphicsBeginImageContext(viewToCapture.bounds.size);
    [viewToCapture.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return viewImage;
}

参数“viewToCapture”将是您的 webView。

于 2012-04-19T12:46:16.067 回答
1
browserScrollableView=browserView.scrollView;

是 NS_AVAILABLE_IOS(5_0);

检查您的设备 iOS 版本。

于 2012-10-05T14:05:25.830 回答