5
我想模糊我的iOS應用程序的整個屏幕,並且我不能使用UIBlurEffect
,因爲我希望能夠控制模糊。所以我試圖使用CIGaussianBlur
,但我遇到了屏幕邊緣的問題。全屏高斯模糊
我走了屏幕截圖,然後用CIGaussianBlur
運行它通過CIFilter
,轉換CIImage
回到UIImage
,並在屏幕上方加入了新的模糊圖像。
這裏是我的代碼:
let layer = UIApplication.sharedApplication().keyWindow?.layer
UIGraphicsBeginImageContext(view.frame.size)
layer!.renderInContext(UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let blurRadius = 5
var ciimage: CIImage = CIImage(image: screenshot)!
var filter: CIFilter = CIFilter(name:"CIGaussianBlur")!
filter.setDefaults()
filter.setValue(ciimage, forKey: kCIInputImageKey)
filter.setValue(blurRadius, forKey: kCIInputRadiusKey)
let ciContext = CIContext(options: nil)
let result = filter.valueForKey(kCIOutputImageKey) as! CIImage!
let cgImage = ciContext.createCGImage(result, fromRect: view.frame)
let finalImage = UIImage(CGImage: cgImage)
let blurImageView = UIImageView(frame: view.frame)
blurImageView.image = finalImage
blurImageView.sizeToFit()
blurImageView.contentMode = .ScaleAspectFit
blurImageView.center = view.center
view.addSubview(blurImageView)
這是我所看到的:
它看起來差不多吧,除了邊緣。看起來,模糊半徑到邊緣的模糊正在消失。我嘗試使用上下文大小,但似乎無法使其工作。
如何讓模糊一直走到邊緣?
你先生,該答案應該得到某種成就..它的工作就像一個魅力。謝謝 :) – Wiingaard