iOS截取UIWebView整个页面为图片

194 阅读1分钟

一、 创建UIWebView

// 创建一个webView
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
webView.backgroundColor = [UIColor whiteColor];
webView.opaque = NO;
webView.delegate = self;
webView.scalesPageToFit = YES; // 页面大小适应屏幕
[self.view addSubview:webView];
self.webView = webView;

二、加载web链接

 NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];
 NSURLRequest *request = [NSURLRequest requestWithURL:url];
 [self.webView loadRequest:request];

三、在webView代理方法webViewDidFinishLoad页面加载完成的时候,截图

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
        UIScrollView *scroll = self.webView.subviews.firstObject;
        
        scroll.frame = scroll.superview.frame;
        CGRect frm = scroll.frame;
        frm.size.height = _webView.scrollView.contentSize.height;
        scroll.frame = frm;
        [scroll.superview layoutIfNeeded];
        // 执行截图
        [self screenView:scroll];
}

四、截图方法

/// 截图
- (void)screenView:(UIScrollView *)view
{
    // 设置截图大小
UIGraphicsBeginImageContextWithOptions(CGSizeMake(SCREEN_WIDTH,view.frame.size.height), YES, 0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    CGImageRef imageRef = viewImage.CGImage;
    UIImage *sendImage = [[UIImage alloc] initWithCGImage:imageRef];
    NSLog(@"sendImage==%@",sendImage);
     //保存图片到照片库 (iOS10 以上记得在info.plist添加相册访问权限,否则可能崩溃)
   UIImageWriteToSavedPhotosAlbum(sendImage, nil, nil, nil);
}

五、 按Home键,到手机系统相册查看截图。完成。