Ios CALayer或其他技术来实际修改后面图层的颜色,更像是剪裁

Ios CALayer或其他技术来实际修改后面图层的颜色,更像是剪裁,ios,uikit,calayer,Ios,Uikit,Calayer,总结,在iOS中,如何拥有一个修改其后面所有视图像素的视图 你说你有一个视图,还有任何视图,但是让我们考虑一个集合视图,它恰好是一些颜色块: 假设我们在上面添加了一个视图,CleverView,它要么只是阻止该视图(因此,白色-普通),要么甚至在该层中“切一个洞”(相对容易,谷歌) 到目前为止没有问题:这里有一个白色的正方形: 但如果我们想这样做: CleverView正在改变它下面的所有饱和度 或许是这样: CleverView正在改变它下面的色调 请注意,在示例中,它以像素方式工作

总结,在iOS中,如何拥有一个修改其后面所有视图像素的视图


<>你说你有一个视图,还有任何视图,但是让我们考虑一个集合视图,它恰好是一些颜色块:

假设我们在上面添加了一个视图,CleverView,它要么只是阻止该视图(因此,白色-普通),要么甚至在该层中“切一个洞”(相对容易,谷歌)

到目前为止没有问题:这里有一个白色的正方形:

但如果我们想这样做:

CleverView正在改变它下面的所有饱和度

或许是这样:

CleverView正在改变它下面的色调

请注意,在示例中,它以像素方式工作,而不是(“仅”)标记每个集合视图单元以更改所有单元的颜色

因此,理想情况下,CleverView会对其后面的任何内容执行此操作(即,它覆盖或部分覆盖的任何一组视图,因此集合视图示例就是“多视图”)

当然,下面的东西和克里夫视图的形状都可以实时进行动画和移动

有没有办法在iOS中实现这一点

(在那个特定的例子中,我所做的只是,有两个集合视图:底部视图和顶部视图具有新的颜色值。只需小心地剪裁顶部视图即可实现效果。但显然,这不如实际“修改其后面所有像素的值”的视图聪明。)


{请注意,很明显,您基本上可以制作一个屏幕截图,咀嚼该图像并显示它;这并不是一个很好的解决方案。}

CALayer有一个属性
backgroundFilters
,您通常可以在其中添加一个
CIFilter
。但是,文件表明

特殊注意事项中的图层不支持此属性 iOS

这很烦人,但我们只有这些了。可能是出于性能考虑

我建议查看
SceneKit
,那里的原语与
CoreAnimation
非常相似,也可以使用
CAAnimation
设置动画,但提供高级工具来配置和控制渲染的更多方面

例如,
SCNNode
具有
过滤器