Quartz2D -- 截屏功能

Quartz2D -- 截屏功能_第1张图片

//生成一张新的图片(截屏)

▶️//生成一张跟原始imageView一样大小的图片

        //UIGraphicsBeginImageContext(self.imageV.bounds.size);

        UIGraphicsBeginImageContextWithOptions(self.imageV.bounds.size, NO, 0.0);

▶️//设置一个矩形的裁剪区域

        UIRectClip(self.coverView.frame);  

        //UIBezierPath *path = [UIBezierPath bezierPathWithRect:(CGRect)]  

▶️//把ImageView的内容画到上下文当中.

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        [self.imageV.layer renderInContext:ctx];

▶️//从上下文当中生成一张图片

        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

▶️//关闭上下文

       UIGraphicsEndImageContext();

       //把原来imageView当中的那张图片给替换掉了

        self.imageV.image = newImage;

        //手指松开时移除遮盖

        [self.coverView removeFromSuperview];


ps: self.imageV    -- 原图

self.coverView     -- 截屏区域

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

图片保存到系统相册调用方法:

//参数说明:

//第一个参数:要写入到相册的图片.

//第二个参数:哪个对象坚听写入完成时的状态.

//第三个参数:图片保存完成时调用的方法

//注意:图片保存完成时调用的方法必须得是image:didFinishSavingWithError: contextInfo:

UIImageWriteToSavedPhotosAlbum(newImage,self,@selector(image:didFinishSavingWithError: contextInfo:),nil);

//当照片写入到系统相册结束时调用

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {

}

你可能感兴趣的:(Quartz2D -- 截屏功能)