如何在Swift中的动态相机视图上方添加自定义形状的模糊蒙版?

Are*_* Li 5 camera blur ios swift

我正在使用Swift开发具有相机功能的iOS应用程序,它需要在相机视图上方有一个模糊图层,中间有一个孔,如下图所示.

我尝试了几种方法,但没有一种方法在没有覆盖孔的情况下添加了模糊效果.我也没有在Google上花费时间后找到合适的解决方案.

任何人都可以提供一些提示,我怎么才能模糊附加到图像视图的png图像的非透明部分?

我试过的方法:

  1. 使用内置的iOS 8模糊效果

    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    maskImage.addSubview(blurEffectView)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用"CIGaussianBlur"过滤器

    var imageToBlur = CIImage(image: image)
    var blurfilter = CIFilter(name: "CIGaussianBlur")
    blurfilter.setValue(imageToBlur, forKey: "inputImage")
    var resultImage = blurfilter.valueForKey("outputImage") as! CIImage
    var blurredImage = UIImage(CIImage: resultImage)
    self.maskImage.image = blurredImage
    
    Run Code Online (Sandbox Code Playgroud)

我想要的视觉效果:

在此输入图像描述

Chr*_*ver 2

我通过使用具有所述模糊图像的图层创建覆盖层来完成此操作,然后使用从一直围绕范围的路径构建的蒙版,然后跳转到切口孔,向相反方向移动绕组填充规则。

请参阅此处的文档:

https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_paths/dq_paths.html

不过,有很多记录在案的示例,这里是一个: 在静态方法中在 UIView 上用清晰的颜色绘制(切一个洞)