我有两个不同的UIImageViews
。我想使用屏幕混合模式与UIImageView
底部进行顶级UIImageView
混合。
我知道CALayer
:compositingFilter
的属性,我知道它在iOS中不起作用。我已经搜索了很多解决方案,我发现了如何将UIView
作为子类并覆盖drawRect
。
我尝试将drawRect
中的上下文设置为屏幕混合模式,尽管它仍会正常绘制每一个图像。也许我做错了什么,或者方法应该是不同的。也许我需要OpenGL或CALayer来实现这一目标。有人可以帮忙吗?
答案 0 :(得分:17)
不幸的是,在iOS上的UIViews之间无法进行非复合混合。 UIKit没有提供功能,你已经注意到了,CALayer也做不到。
通常,在UIView中实现-drawRect对你没有帮助。你正在绘制一个空的位图 - 它不包含它背后的视图位,因为它们可能随时改变(任何视图或图层都可能被动画化)。 CA从根本上假设图层的内容应该彼此独立。
你可以尝试在-drawRect:
-[CALayer renderInContext:]
为每个但是这将是缓慢而脆弱的,如果您为任何视图制作动画,它将无法工作。我不推荐它。
如果你真的需要这样做,你将不得不将整个场景切换为使用OpenGL进行渲染,where you've got more freedom。