UIWebView的全屏截图

  项目开发中,我们可能会遇到如下的应用场景:将一篇文章,进行截屏(需要全屏截取,包括滚动部分)后,分享到新浪微博、邮箱等等。前段时间,我在应用开发中实现了该功能,代码也是从网上找到的,自己整理了一下。主要实现截屏的方法如下所示:

 1 // 实现页面的截图(包含滚动部分)
 2 - (NSData *)getImageFromView:(UIView *)view
 3 {
 4     NSData *pngImg;
 5     CGFloat max, scale = 1.0;
 6     CGSize viewSize = [view bounds].size;
 7     
 8     // 获取全屏的Size,包含可见部分和不可见部分(滚动部分)
 9     CGSize size = [view sizeThatFits:CGSizeZero];
10     
11     max = (viewSize.width > viewSize.height) ? viewSize.width : viewSize.height;
12     if( max > 960 )
13     {
14         scale = 960/max;
15     }
16     
17     UIGraphicsBeginImageContextWithOptions(size,YES,scale);
18     
19     // 设置view成全部展开效果
20     [view setFrame: CGRectMake(0, 0, size.width, size.height)];
21     
22     CGContextRef context = UIGraphicsGetCurrentContext();
23     [view.layer renderInContext:context];
24     pngImg = UIImagePNGRepresentation( UIGraphicsGetImageFromCurrentImageContext() );
25     
26     UIGraphicsEndImageContext();
27     return pngImg;
28 }

  使用的时候,我们可以用下面的代码:

1 // webView是页面的一个UIWebView控件,这里是实现webView的全屏截图,其他控件各位可以自行试验
2 NSData *imageData = [self getImageFromView:webView];
3 [imageData writeToFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"new.png"] atomically:YES];

  【说明】:实现截图功能,需要引入QuartzCore.framework框架,并且添加如下头文件:

  #include <QuartzCore/QuartzCore.h>

 

posted @ 2013-12-16 10:12  Gof Lee  阅读(1255)  评论(0编辑  收藏  举报