我有一个NSView。它有一层。在图层内部,有几个子图层。其中一个子层需要与其下面的层混合。我设置了顶层的compositingFilter
属性,但没有发生混合。 :-(
这是一个直观的表示:
Root Layer <-- myView.layer
|- Bottom Layer <-- myView.layer.sublayers[0]
|- Middle Layer <-- myView.layer.sublayers[1]
|- Top Layer <-- myView.layer.sublayers[2]
Root Layer
|- Bottom Layer
|- Middle Layer
|- Top Layer <-- Added filter to this layer.
我设置了这样的属性:
self.topLayer.compositingFilter = [CIFilter filterWithName:@"CIMultiplyBlendMode"];
我假设输入图像和背景图像将自动提供每个图层的contents
,但也许我错了。我呢?
TL; DR:n00b如何使用混合模式将一叠图层组合在一起?
P.S。我使用委托方法contents
绘制每个图层的-drawLayer:inContext:
。
答案 0 :(得分:1)
您必须在NSView上启用一个标志,因为它在图层上使用过滤器:
[self.view setWantsLayer:YES];
[self.view setLayerUsesCoreImageFilters:YES];
我认为这是针对OS X和NSView的,并且对于iOS上的UIView不是必需的。其他一切对我来说都是正确的。