首页 > 代码库 > iOS当前屏幕截屏

iOS当前屏幕截屏

需求描述:

有两个ViewController 我们记做 A、B ,其中B controller只是显示下半部分;

如下图效果:

技术分享

实现这种的方案很多,可以用添加View方法,  也可以用UIWindows 来实现。

但是我这边是想用presentViewController 实现,但是A present  B之后,之前的A就会消失,不会和B 覆盖显示,因此就相当了截取A试图之后在present B。

具体看看实现方案吧:

 

方法一:

这个方法获取的到图片不会失真

1 -(UIImage *)captureImageFromViewLow:(UIView *)orgView {
2     //获取指定View的图片
3     UIGraphicsBeginImageContextWithOptions(orgView.bounds.size, NO, 0.0);
4     CGContextRef context = UIGraphicsGetCurrentContext();
5     [orgView.layer renderInContext:context];
6     UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
7     UIGraphicsEndImageContext();
8     return image;
9 } 

 

方法二:

截取的图片覆盖重新展示之后,会出现失真现象

//获取全屏图片
-(UIImage *)fullScreenshots{
    
    UIWindow *screenWindow = [[UIApplicationsharedApplication] keyWindow];
    
    UIGraphicsBeginImageContext(screenWindow.frame.size);//全屏截图,包括window
    
    [screenWindow.layerrenderInContext:UIGraphicsGetCurrentContext()];
    
    UIImage *viewImage =UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    return viewImage;
}

 

综合这两个方案,最终我选择了方案一

iOS当前屏幕截屏