原理就是拿到需要截屏View的layer
渲染到上下文中
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//开启一个图片的上下文
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
//拿到我们开启的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//把需要截屏View的layer渲染到上下文中
[self.view.layer renderInContext:ctx];
//从上下文中拿出图片
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
//因为上下文是我们自己开启的,所以用完之后要关闭掉
UIGraphicsEndImageContext();
//为了查看截屏效果,我把图片写到了电脑上
//生成jpg格式的图片
NSData *imgData = UIImageJPEGRepresentation(img, 1);
//如果想生成png格式的图片调用下面的方法
//NSData *imgData = UIImagePNGRepresentation(img);
[imgData writeToFile:@"/Users/olddevil/Desktop/图片/img.jpg" atomically:YES];
}