我试图添加一个模糊的效果到一个层与下面的代码。
但这不管用,有什么建议吗?
let layer = CALayer()
layer.frame = CGRect(x: 150, y: 150, width: 150, height: 150)
layer.backgroundColor = UIColor.blue.cgColor
layer.contents = UIImage(named: "D1")?.cgImage
if let filter = CIFilter(name: "CIGaussianBlur", withInputParameters: ["inputRadius": 15]) {
filter.setDefaults()
layer.filters = [filter]
}
view.layer.addSublayer(layer)它只是显示图像,没有过滤效果。我真的很困惑。谢谢你的建议。
发布于 2017-12-04 11:24:09
这在iOS上不起作用。来自苹果文档:
特殊考虑事项 iOS中的层不支持此属性。
您需要用“长”的方式来完成它:
let ciInput = CIImage(image: UIImage(named: "D1")!)
let filter = CIFilter(name: "CIGaussianBlur", withInputParameters: ["inputImage": ciInput, "inputRadius": 15])
let ciOutput = filter?.outputImage
let ciContext = CIContext(options: nil)
let cgImage = ciContext.createCGImage(ciOutput!, from: (ciOutput?.extent)!)
layer.contents = cgImage请注意,我的Swift 4代码是未经测试的。可能存在一个或两个构建问题(特别是展开问题),当然,由于这个原因,nil可能会在运行时发生。我提供Swift代码作为上述问题中公认答案的良好翻译。
https://stackoverflow.com/questions/47629627
复制相似问题