如何使用不同的混合模式渲染CALayer,如屏幕还是乘法?

don*_*ile 10 iphone core-animation ios

我有一个UIImageView并希望它以特定的混合模式显示.我知道iPhone有不同的混合模式,而且它可能可能有很多的CG代码来做到这一点...但也许有一个很好的方式,用CALayerUIImageView

bde*_*dev 6

将视图层的compositingFilter设置为支持的混合模式字符串。从文档中,图层的compositingFilter

一个 CoreImage 过滤器,用于合成图层及其后面的内容。

要获取 Core Image 过滤器列表,请打印出由 kCICategoryCompositeOperation 定义的过滤器名称

[CIFilter filterNamesInCategory:kCICategoryCompositeOperation]
Run Code Online (Sandbox Code Playgroud)

或直接作为

[CIFilter filterNamesInCategory:@"CICategoryCompositeOperation"]
Run Code Online (Sandbox Code Playgroud)

该数组将包含表单中的核心图像过滤器

{
   CIColorBlendMode,
   CIColorBurnBlendMode,
   CIColorDodgeBlendMode,
   CIMultiplyBlendMode,
   ...
}
Run Code Online (Sandbox Code Playgroud)

要使用 CIMultiplyBlendMode,请将“multiplyBlendMode”设置为图层上的合成过滤器

self.layer.compositingFilter = @"multiplyBlendMode";
Run Code Online (Sandbox Code Playgroud)

  • 由于问题是关于 iOS 的,但请注意,Apple 在`compositingFilter` 的文档中声明:“iOS 中的图层不支持此属性。” (6认同)
  • 奇怪的是,文档说它在 iOS 上不受支持,但它似乎像这个示例项目所示那样工作:https://github.com/arthurschiller/CompositingFilters (4认同)
  • 过滤器的完整列表在 [此处](https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/uid/TP30000136-SW71)。 (3认同)