模糊背后的CALayer OSX

时间:2015-11-06 15:33:24

标签: macos calayer nsview blur

我正在尝试创建一个自定义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.S。 NSVisualEffectView并未提供我正在寻找的那种控制。

0 个答案:

没有答案