美文网首页
iOS开发 UIScrollView截图保存到相册

iOS开发 UIScrollView截图保存到相册

作者: LuckyBugGo | 来源:发表于2019-08-01 13:29 被阅读0次

    需求

    以一个UIScrollView视图的内容为模板生成一个UIImage对象,然后将这个UIImage对象保存到系统相册。

    解决

    // 生成截图
    -(UIImage *)scrollviewShot{
        UIScrollView *scrollView = (UIScrollView *)self;
        UIImage* image = nil;
        UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, YES, [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();
        return image;
    }
    // 保存到相册
    UIImage* image = [self.scrollView viewshot];
        if (image != nil) {
            //保存图片到相册
            UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
        }
    }
    

    讲解

    使用UIGraphics对ScrollView的内容提取保存成image对象,再讲image对象保存到相册。

    // 启动图形上下文构建
    void     UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);
    

    size图像到的大小,opaque图像是否是透明的,scale图像的缩放比。

    // 将layer中的内容提取成图形的上下文
    [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
    // 生成image对象
    image = UIGraphicsGetImageFromCurrentImageContext();
    // 关闭图形上下文
    UIGraphicsEndImageContext();
    

    相关文章

      网友评论

          本文标题:iOS开发 UIScrollView截图保存到相册

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