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(00, image2.size.width, image2.size.height)];     // Draw image1     [image1 drawInRect:CGRectMake(00, 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]], nilnilnil); }

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

 title=

Demo下载:

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

参考文章


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

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