美文网首页
scrollView转化image 并保存到本地相册

scrollView转化image 并保存到本地相册

作者: 汤玉阳Scofield | 来源:发表于2016-12-16 11:14 被阅读0次

    项目开发中的一个需求 ,需要将不在屏幕中的内容也要截图保存到本地相册 ,于是我的思路是:将下面的大的scrollView转化为image,再将image保存相册即可。以下是我的代码:

    pragma mark 把scrollView转换成image

    - (UIImage *)captureScrollView:(UIScrollView *)scrollView{
        UIImage* image = nil;
    //  第一个参数表示区域大小。第二个参数表示是否是非透明的,一般传no。第三个参数就是屏幕密度了,关键就是第三个参数
    UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, NO, [UIScreen mainScreen].scale);
        {
            CGPoint savedContentOffset = scrollView.contentOffset;
            CGRect savedFrame = scrollView.frame;
            scrollView.contentOffset = CGPointZero;
            scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
            [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
            image = UIGraphicsGetImageFromCurrentImageContext();
            scrollView.contentOffset = savedContentOffset;
            scrollView.frame = savedFrame;
        }
        UIGraphicsEndImageContext();
        if (image != nil) {
            return image;
        }
        return nil;
    }
    

    pragma mark 点击保存图片按钮的实现方法

    - (void)saveImageButtonAction:(id)sender{
        NSLog(@"点击了保存图片");
        UIImage *image = [self captureScrollView:self.bigView];
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    }
    

    pragma mark 成功保存图片到相册中, 必须调用此方法, 否则会报参数越界错误

    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
        
        NSLog(@"error == %@",error);
        if (!error) {
            [SVProgressHUD showSuccessWithStatus:@"保存成功"];
        } else {
            [SVProgressHUD showErrorWithStatus:@"保存失败"];
        }
    }
    

    最后说一下我在这里遇到的一个坑:大家在设置scrollView的ContentSize时 如果设置宽为0的话,会一直生成image失败,导致保存不成功。宽度改成屏幕的宽度即可。

    相关文章

      网友评论

          本文标题:scrollView转化image 并保存到本地相册

          本文链接:https://www.haomeiwen.com/subject/iarnmttx.html