Skip to content

Latest commit

 

History

History
36 lines (25 loc) · 1.61 KB

截屏.md

File metadata and controls

36 lines (25 loc) · 1.61 KB

想要把UIView或者他的子控件(比如UIImageView)上面的东西给绘制到上下文当中,必须得要使用渲染(描绘)的方式.[^self.view.layer renderInContext:]

  • 截屏最关键的2个方法,一个是addClip 另一个是 renderInContext;
//把控制器的View生成一张图片
    
    //1.开启一个位图上下文(跟当前控制器View一样大小的尺寸)  
    // 是不是不是透明 No表示上下文透明,可以渲染画板底下的东西  
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
 
    
    //把ImageV绘制到上下文之前,设置一个裁剪区域
        UIBezierPath *clipPath = [UIBezierPath bezierPathWithRect:self.coverV.frame];
        [clipPath addClip];
        
    //把把控制器的View绘制到上下文当中.(GetCurrent不是uiview别自己搞错了)
    //2.想要把UIView或者他的子控件(比如UIImageView)上面的东西给绘制到上下文当中,必须得要使用渲染(描绘)的方式.
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    [self.view.layer renderInContext:ctx];
    //[self.view.layer drawInContext:ctx];
    
    //3.从上下文当中生成一张图片
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    

    //4.关闭上下文
    UIGraphicsEndImageContext();

    //把生成的图片写入到桌面(文件方式进行传输:二进制流NSData)
    //把图片转成二进制流NSData
    //NSData *data = UIImageJPEGRepresentation(newImage, 1);
     NSData *data = UIImagePNGRepresentation(newImage);
    [data writeToFile:@"/Users/xiaomage/Desktop/newImage.png" atomically:YES];