截屏

截屏效果实现具体思路为:

  • 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];

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