3

我正在尝试将 CIFilter 添加到 a 的 backgroundFilters 属性中,以CALayer使其在UIView. 因此,我进行了子类CALayer化并在 init 中执行以下操作:

CIFilter* blur = [CIFilter filterWithName:@"CIGaussianBlur"];
[blur setDefaults];
[blur setValue:@(10) forKey:@"inputRadius"];
self.backgroundFilters = @[ blur ];

UIView然后我通过返回图层类创建了一个具有此自定义图层的子类作为图层+[UIView layerClass]

这是工作,上面的代码被执行!

但是,如果我将此视图放在 a 上方,UIImageView我希望图像在放置此视图的位置被绘制模糊。但事实并非如此!该视图的行为就像一个常规视图,并采用我为其backgroundColor属性设置的任何颜色/alpha 值,但我只看到底层UIImageView的原样,没有模糊!

4

2 回答 2

8

CALayer 的 backgroundFilters 在 UIView 上什么都不做的原因是不幸的backgroundFilters是,iOS 中的图层不支持该属性。它在文档里面,在描述的最后:

特别注意事项

iOS 中的图层不支持此属性。

我自己试图插入一个UIView模糊其背后内容的东西,我被这个咬了。要在 iOS 上模糊视图,似乎需要做更多的工作(复制图像内的 UIViews 内容,然后模糊并显示图像)。

于 2013-06-06T12:20:33.903 回答
-2

我认为这是预期的行为。

文档

背景过滤器会影响图层背后的内容,这些内容会透入图层本身。通常,此内容属于充当图层父级的超级图层。

我的解释是,这些过滤器只影响包含它们的视图中的内容。

于 2013-04-27T18:12:27.383 回答