iOS-webView截图

lp.jpg

开发中如何截图,webView为例,用法如下:

(一)截取当前屏幕显示的区域(设备的全屏)

代码如下:

    CGSize size = self.view.frame.size; 
    UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(viewImage, self, nil, nil);  //保存到相册中
(二)截取webView所有显示内容的区域

客户提出相关需求,需要截图当前webview所展示的所有的内容,代码如下:

    UIScrollView *scroll = (UIScrollView *)_webView;
    CGRect frame = scroll.frame;
    CGRect frame1 = scroll.frame; // 备份frame
    frame.size.height = _webView.scrollView.contentSize.height;
    scroll.frame = frame;
  
 UIGraphicsBeginImageContextWithOptions(CGSizeMake(iChe_ViewFrame.size.width,frame.size.height), YES, 0);     //设置截屏大小
    [scroll.layer renderInContext:UIGraphicsGetCurrentContext()];
    viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    CGImageRef imageRef = viewImage.CGImage;
    UIImage *sendImage = [[UIImage alloc] initWithCGImage:imageRef];
    UIImageWriteToSavedPhotosAlbum(sendImage, nil, nil, nil);//保存图片到照片库
    
    // 恢复frame 不然滑动没效果
    scroll.frame = frame1;

解释:
1、初始没有截图的时候,如果UIScrollView的高度不等于webView.scrollView.contentSize.height,后期截图的结果就是图片的高度是对的,但是只有只有当前屏幕展示的内容,其他展示不到的都是黑屏。
2、截图修改了frame的高度,截图完毕之后如果不恢复之前的高度,是看不到滑动效果的,因为UIScrollView高度大于你的设备的屏幕高。

注意:
为避免内存泄漏,UIGraphicsBeginImageContextWithOptionsUIGraphicsEndImageContext需成对出现。

资料:
UIGraphicsBeginImageContext 和 UIGraphicsBeginImageContextWithOptions

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,024评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • #写给18岁的自己#第二篇 亲爱的Anne: 书影单是我攒了两年的私房,而剧单是让我“沉下去、浮上来”自我修行的秘...
    珞小六阅读 182评论 0 0
  • 女儿班级出了纪律新规定,被老师点名2次的孩子家长,进教课堂。当然这个活动是学校的特色,邀请家长进课堂,陪伴孩子一起...
    燕子小屋阅读 237评论 0 0
  • 文/雪中萍 2016.4.19 星期二 晴 “妈妈,我想跟你说件事。”晚上宝贝写完日记,走过来说,“什么...
    雪中萍阅读 355评论 0 0