2017-12-04 18 views
0

다음 코드로 레이어에 흐림 효과를 추가하려고합니다.
하지만 작동하지 않습니다.CIFilter가 작동하지 않습니다.

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) 

방금 ​​필터 효과가없는 이미지가 표시되었습니다. 나는 정말로 혼란 스럽다. 조언 해 주셔서 감사합니다.

+0

filter.setDefaults()를 주석 처리하면 어떻게됩니까? –

+0

@LouisLeung'filter.setDefaults()'의 유무와 동일합니다. – JsW

답변

0

iOS에서는 작동하지 않습니다. Apple 문서에서 :

특별 고려 사항

이 속성은 아이폰 OS에서 레이어를 지원하지 않습니다.

당신은 그것에게 "long" 방법을 수행해야합니다 :

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 

내 스위프트 4 코드가 검증되지 않은 것을 유의하시기 바랍니다. 하나 또는 두 개의 빌드 문제 (특히 래핑 해제)가있을 수 있으며 (당연히) nil 런타임에 발생할 수 있습니다. 위에 링크 된 질문에서 대답의 좋은 번역으로 Swift 코드를 제공하고 있습니다.

+0

고마워요. D. – JsW