0

这是代码,它真的很慢,就像渲染大约 25 个标签的秒数一样慢。

extension UILabel{
    func deBlur(){
        for subview in self.subviews {
            if (subview.tag == 99999) {
                subview.removeFromSuperview()
            }
        }
    }

    func blur(){
        let  blurRadius:CGFloat = 5.1

        UIGraphicsBeginImageContext(bounds.size)
        layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        let blurFilter = CIFilter(name: "CIGaussianBlur")
        blurFilter?.setDefaults()
        let imageToBlur = CIImage(cgImage: (image?.cgImage)!)
        blurFilter?.setValue(imageToBlur, forKey: kCIInputImageKey)
        blurFilter?.setValue(blurRadius, forKey: "inputRadius")
        let outputImage: CIImage? = blurFilter?.outputImage
        let context = CIContext(options: nil)
        let cgimg = context.createCGImage(outputImage!, from: (outputImage?.extent)!)
        layer.contents = cgimg!
    }
}

任何图像/UIGraphics 大师都知道为什么这么慢?

更新:这行代码是罪魁祸首。但是,还需要创建模糊效果。

        let cgimg = UILabel.context.createCGImage(outputImage!, from: (outputImage?.extent)!)
4

0 回答 0