Ios 在Swift中以编程方式进行屏幕截图和模糊

Ios 在Swift中以编程方式进行屏幕截图和模糊,ios,xcode,swift,screenshot,blur,Ios,Xcode,Swift,Screenshot,Blur,我想从我的应用程序截图编程和代码工作良好,但我有一个UIVisualEffectView与模糊效果和截图给了我没有模糊的图像! 我如何让截图也拍摄模糊 UIGraphicsBeginImageContextWithOptions(fullView.bounds.size, true, 1) self.fullView.layer.renderInContext(UIGraphicsGetCurrentContext()) var viewImage = UIGraphicsGetImageFro

我想从我的应用程序截图编程和代码工作良好,但我有一个UIVisualEffectView与模糊效果和截图给了我没有模糊的图像! 我如何让截图也拍摄模糊

UIGraphicsBeginImageContextWithOptions(fullView.bounds.size, true, 1)
self.fullView.layer.renderInContext(UIGraphicsGetCurrentContext())
var viewImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil)

要在以编程方式拍摄屏幕图像时保留UIVisualEffectView模糊,必须拍摄整个屏幕的图像

以下是苹果提供的更具技术性的定义:

许多效果需要宿主的窗口的支持 UIVisualEffectView。正在尝试仅拍摄 UIVisualEffectView将生成不包含 效果。获取包含 UIVisualEffectView,必须对整个UIWindow或 包含它的屏幕


截图后,可以通过编程方式添加模糊效果。下面是一个使用库的示例,可以使用安装。使用本地Apple库也可以实现类似的效果

GPUImagePicture *picture = [[GPUImagePicture alloc] initWithImage:snapShot];
GPUImageiOSBlurFilter *blurFilter = [[GPUImageiOSBlurFilter alloc] init];
[blurFilter setBlurRadiusInPixels:4];

[picture addTarget:blurFilter];
[blurFilter useNextFrameForImageCapture];
[picture processImage];

UIImage *processed = [blurFilter imageFromCurrentFramebuffer];

我也有同样的问题。我有一个视觉效果(模糊)的视图控制器应用于背景图像和顶部的其他一些非模糊视图,我想拍摄该控制器的屏幕截图

正如@user3721428所强调的那样,试图捕获视图是行不通的。让我惊讶的是,试图在上下文中渲染窗口层是行不通的

工作原理是从UI屏幕获取快照视图:
let view=UIScreen.main.snapshotView(AfterScreen更新:true)


然后使用方法从该视图中抓取图像

谢谢你的回答,当我在没有UIVisualEffectView的情况下拍摄屏幕截图时,有没有其他方法可以将模糊效果添加到部分屏幕上?@Bandarajahmi我添加了一个如何以编程方式模糊图像的示例,尽管这应该是公认的答案。