首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CIFilter不工作

CIFilter不工作
EN

Stack Overflow用户
提问于 2017-12-04 08:55:30
回答 1查看 861关注 0票数 3

我试图添加一个模糊的效果到一个层与下面的代码。

但这不管用,有什么建议吗?

代码语言:javascript
复制
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)

它只是显示图像,没有过滤效果。我真的很困惑。谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2017-12-04 11:24:09

这在iOS上不起作用。来自苹果文档:

特殊考虑事项 iOS中的层不支持此属性。

您需要用“长”的方式来完成它:

代码语言:javascript
复制
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代码作为上述问题中公认答案的良好翻译。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47629627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档