截屏效果实现具体思路为:
- 1、把UIView的东西绘制图片上下文当中,生成一张新的图片.
注意:UIView上的东西是不能直接画到上下文当中的.
- 2、UIView之所以能够显示是因为内部的一个层(layer),所以要把layer层上的东西渲染到UIView上面的.
怎样把图层当中的内容渲染到上下文当中?
直接调用layer的renderInContext:
方法
renderInContext:
带有一个参数, 就是要把图层上的内容渲染到哪个上下文.
截屏具体实现代码为:
//[UIScreen mainScreen].scale :当前像素坐标与点坐标的比例.
//在OC像素坐标会自动根据比例转成点坐标.
//0.0 = [UIScreen mainScreen].scale;
// iphone7:scale为@2x,iphone7plus:scale为@3x
// scale:决定了截屏的大小,生成@2x、@3x等图片
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, YES, 0.0);
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 把view上面的内容渲染到当前上下文
[self.view.layer renderInContext:ctx];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//文件是以二制流形式传输.
NSData *imageData = UIImageJPEGRepresentation(newImage, 1.0);
// 关闭上下文
UIGraphicsEndImageContext();
[imageData writeToFile:@"/Users/smitGKC/Desktop/view.jpg" atomically:YES];