我正在尝试向使用backgroundColor的图层添加高斯模糊。
下面的代码在标题文本周围添加了一个框,并且工作正常,我只希望白色模糊。
title.layer.borderColor = UIColor.white.cgColor
title.layer.backgroundColor = UIColor.white.cgColor
title.layer.borderWidth = 4
title.layer.cornerRadius = 5
是否可以不使用imageView?
谢谢!
答案 0 :(得分:1)
如果您要为Mac OS进行编码,则以下Vlad的解决方案将为您简单而优雅地工作。 Mac OS CALayers允许您添加一系列Core Image过滤器,这些过滤器将“实时”应用到内容中。 iOS没有。由于您在问题中提到UIColor
,所以我猜您所提出的问题是针对iOS的。
在iOS上,使用Core Image过滤器对图层执行此操作可能需要花费大量的手动编码。 (您需要编写代码来捕获要模糊的视图的内容,将其转换为CIImage
,将其交给Core Image进行模糊处理,然后将生成的CIImage
映射回到CGImage
并安装到您的图层中。)
但是,如果您向视图中添加UIVisualEffectView
,则可以使下面的视图内容模糊。 UIVisualEffectView
非常易于使用。在线上有许多教程向您展示如何使用它们。那就是我的建议。
答案 1 :(得分:0)
let layer = CALayer()
if let filter = CIFilter(name:"CIGaussianBlur") {
filter.name = "myFilter"
layer.backgroundFilters = [filter]
layer.setValue(1, forKeyPath: "backgroundFilters.myFilter.inputRadius")
}
https://developer.apple.com/documentation/quartzcore/calayer/1410827-backgroundfilters