【发布时间】:2014-07-04 15:18:00
【问题描述】:
我有一个 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 如何使用混合模式将一堆图层合成在一起?
附:我正在使用委托方法-drawLayer:inContext: 绘制每一层的contents。
【问题讨论】:
-
你没有错。输入图像自动设置。不应该什么时候设置过滤器?之后你会调用 setNeedsDisplay 吗?您是否尝试将图像设置为内容?我发现有帮助的是在将其添加到图层之前将
setDefaults发送到过滤器。
标签: objective-c macos core-animation calayer cifilter