Quartz2D -- 截屏功能


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

▶️//生成一张跟原始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以及drawRect的重绘机制字数1487 阅读21 评论1 喜欢1一、什么是Quartz2D Q...
    PurpleWind阅读 810评论 0 3
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,484评论 2 4
  • 1.圆形图片裁剪 目标明确: 得到一张图片 (=> 位图上下文,手动开启和关闭,代码位置任意)思路:先设置好位图上...
    夏天不冷阅读 832评论 0 1
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    十年一品温如言1008阅读 1,731评论 0 3
  • 一如往常 天 蔚蓝 风和日丽 渐渐地 一股闷热劲 起来了 开始 躁动了 … 没有风 到处 静悄悄的 黑云 渐渐地 ...
    简小象阅读 151评论 0 0