iOS 网页截屏

#pragma mark--截屏处理

//截屏处理

- (UIImage*)cutPic{


 CGRectsnapshotFrame = CGRectMake(0, 0, _webView.scrollView.contentSize.width, _webView.scrollView.contentSize.height);

UIEdgeInsetssnapshotEdgeInsets = UIEdgeInsetsZero;

 UIImage*shareImage = [selfsnapshotViewFromRect:snapshotFrame withCapInsets:snapshotEdgeInsets];

 returnshareImage;

}

// 网页长截图

- (UIImage*)snapshotViewFromRect:(CGRect)rect withCapInsets:(UIEdgeInsets)capInsets {


 CGFloatscale = [UIScreenmainScreen].scale;


 CGSizeboundsSize = self.webView.bounds.size;

 CGFloatboundsWidth = boundsSize.width;

 CGFloatboundsHeight = boundsSize.height;


 CGSizecontentSize = self.webView.scrollView.contentSize;

 CGFloatcontentHeight = contentSize.height;

 //    CGFloat contentWidth = contentSize.width;


 CGPointoffset = self.webView.scrollView.contentOffset;


    [self.webView.scrollViewsetContentOffset:CGPointMake(0, 0)];


 NSMutableArray*images = [NSMutableArrayarray];

 while(contentHeight > 0) {

 UIGraphicsBeginImageContextWithOptions(boundsSize, NO, [UIScreenmainScreen].scale);

        [self.webView.layerrenderInContext:UIGraphicsGetCurrentContext()];

 UIImage*image = UIGraphicsGetImageFromCurrentImageContext();

 UIGraphicsEndImageContext();

[images addObject:image];


 CGFloatoffsetY = self.webView.scrollView.contentOffset.y;

        [self.webView.scrollViewsetContentOffset:CGPointMake(0, offsetY + boundsHeight)];

        contentHeight -= boundsHeight;

    }



    [self.webView.scrollViewsetContentOffset:offset];


 CGSizeimageSize = CGSizeMake(contentSize.width* scale,

                                  contentSize.height* scale);

 UIGraphicsBeginImageContext(imageSize);

[images enumerateObjectsUsingBlock:^(UIImage*image, NSUIntegeridx, BOOL*stop) {

[image drawInRect:CGRectMake(0,

                                     scale * boundsHeight * idx,

                                     scale * boundsWidth,

                                     scale * boundsHeight)];

    }];

 UIImage*fullImage = UIGraphicsGetImageFromCurrentImageContext();

 UIGraphicsEndImageContext();

 UIImageView* snapshotView = [[UIImageViewalloc]initWithFrame:CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)];


    snapshotView.image= [fullImage resizableImageWithCapInsets:capInsets];

 NSData*data = UIImageJPEGRepresentation(snapshotView.image, 0.3);

 return[UIImageimageWithData:data];

}

你可能感兴趣的:(iOS 网页截屏)