我正在尝试创建一个自定义NSView
,模糊其下的任何内容。这是我的工作代码:
self.wantsLayer = YES;
self.layerUsesCoreImageFilters = YES;
self.layer.drawsAsynchronously = YES;
CIFilter *saturationFilter = [CIFilter filterWithName:@"CIColorControls"];
[saturationFilter setDefaults];
[saturationFilter setValue:@2.0 forKey:@"inputSaturation"];
CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
[blurFilter setDefaults];
[blurFilter setValue:@1.0 forKey:@"inputRadius"];
self.layer.backgroundFilters = @[saturationFilter, blurFilter];
[self.layer setNeedsDisplay];
这绝对没有效果。
如果我将图像添加到图层的内容中,如下所示:
self.layer.contents = [NSImage imageNamed:@"Icon_Red"];
并将行self.layer.backgroundFilters = ...
更改为:self.layer.filters = ...
我得到了一个很好的模糊效果,正是我正在寻找的。 p>
为什么一个人在工作而另一个人没有?
P.S。 NSVisualEffectView
并未提供我正在寻找的那种控制。