美文网首页
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