如何添加在Swift中具有模糊效果的渐变视图?我可以很容易地将渐变图层(CAGradientLayer)添加到视图中。我也可以单独添加模糊视图(UIVisualEffectView)。将渐变效果应用于模糊视图
如何将两者结合起来以创建一个模糊视图,该视图也具有通过完全模糊淡出而不模糊的渐变元素?
的一个类似的效果实例:
如何添加在Swift中具有模糊效果的渐变视图?我可以很容易地将渐变图层(CAGradientLayer)添加到视图中。我也可以单独添加模糊视图(UIVisualEffectView)。将渐变效果应用于模糊视图
如何将两者结合起来以创建一个模糊视图,该视图也具有通过完全模糊淡出而不模糊的渐变元素?
的一个类似的效果实例:
如果你知道CoreImage,你可以很容易地链上的两个过滤器一起,一个来自CICategoryBlur,一个来自类别CICategoryGradient。
下面是一个使用示例。 TO链,只需将第一个过滤器的输出作为下一个的输入:
func convertImageToBW(image:UIImage) -> UIImage {
let filter = CIFilter(name: "CIPhotoEffectMono")
// convert UIImage to CIImage and set as input
let ciInput = CIImage(image: image)
filter?.setValue(ciInput, forKey: "inputImage")
// get output CIImage, render as CGImage first to retain proper UIImage scale
let ciOutput = filter?.outputImage
let ciContext = CIContext()
let cgImage = ciContext.createCGImage(ciOutput!, from: (ciOutput?.extent)!)
return UIImage(cgImage: cgImage!)
}
上面的链接是Apple文档。
如果您希望使渐变中的模糊量持续变化,可以使用[CIMaskedVariableBlur](https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html #// apple_ref/doc/filter/ci/CIMaskedVariableBlur),使用与掩码相同的渐变。 – rickster
@dfd - 感谢您的回答!你知道如果可能的话,适配器适用于UIView ...视图可以有这种模糊/渐变效果在UIImageView之上?这样我可以在它下面交换图像,并通过动画还可以使用此模糊/渐变滤镜幻灯片进出。 – Ranknoodle
简短的回答 - 是的。较长的答案? CIImage(CI滤镜的outputImage)最好被认为是图像的“配方”。把它放到一个CG上下文中,写入一个CALayer或者子类,并且你可以把它变成任何UIView或者子类的一部分。在我的下一次升级中,我将控件从“主”视图移动到一个滑动的“控制板”(认为具有滑块和其他控件的键盘),这样做 - 在投影的图像部分上应用模糊背景。它动画和定向到底部或右侧,取决于更长的尺寸。 – dfd
你是否设法做到这一点? –