屏幕截屏
- 有些时候需要截取屏幕上的某一块内容
- 核心代码
-(void)renderInContext:(CGContextRef)ctx;
渲染
调用某个view的layer的renderInContext:方法即可
Eg:
//1.开启一个位图上下文(跟当前控制器View一样大小的尺寸)
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size,NO,0);
//吧控制器的View绘制到上下文当中
//2.想要吧UIView上面的东西给绘制到上下文中,必须得使用渲染的方法
//获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//因为控制器上面的所有内容都是在layer上面,所以将layer渲染到ctx上下文中
[self.view.layer renderInContext:ctx];
//3.从上下文当中生成一张图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//4.关闭上下文
UIGraphicsEndImageContext();
//把生成的图片写入到桌面(文件方式进行传输:二进制流NSData)
//5.吧图片转换成二进制流NSData
NSData *data = UIImagePNGRepresentation(newImage);
//6.将图片显示在桌面(写入文件)
[data writeToFile:@"<全路径>" atomically:YES];
- 注意:PNG格式的图片自动是质量最高的,JPE格式的图片需要在方法中选定质量
NSData *data = UIImageJPERepresentation(newImage,1);