IOS截图有很多方法,参考博客列表中的第一篇列出了很多种方法,我使用了UIGraphicsBeginImageContext这个方法,也是最常用的方案。

代码示例

1、生成截图的方法

- (UIImage *) captureScreen {
    NSLog(@"capture");
    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
    CGRect rect = [keyWindow bounds];
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [keyWindow.layer renderInContext:context];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

是从UIGraphicsBeginImageContext这里开始设置底的图片大小,rect可以设置成你截图范围的大小。

2、两张图片的合成

把第一张图片image1贴到image2之上

- (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 {
    UIGraphicsBeginImageContext(image2.size);
    // Draw image2
    [image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];
    // Draw image1
    [image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultingImage;
}

用的是一个原理,这两段代码都是生成了截图的图片,还要把图片保存到相册里面。

3、把图片保存到相册

- (void)saveScreenshotToPhotosAlbum:(UIView *)view
{
    //截图保存到相册
//    UIImageWriteToSavedPhotosAlbum([self captureScreen], nil, nil, nil);
    
    //把一张图片贴到截图上面
    UIImageWriteToSavedPhotosAlbum([self addImage:[UIImage imageNamed:@"demo.jpg"] toImage:[self captureScreen]], nil, nil, nil);
}

把图片demo.jpg贴到截图上面,demo的效果是这样,位置在drawInRect里面调整即可

 title=

Demo下载:

Github下载:https://github.com/DamonHu/HudongBlogDemo/tree/master/screenshotDemo

参考文章


☟☟可点击下方广告支持一下☟☟

最后修改:2021 年 03 月 07 日
请我喝杯可乐,请随意打赏: ☞已打赏列表