我有2个UI
ImageViews显示在彼此之上.其中一个可以使用手势识别器拖动.
有没有一种方法可以使用像Multiply这样的混合模式渲染ImageViews?这样当它们移动到每个上面时,它们会以混合模式渲染?
解决方法
你必须覆盖父视图上的drawRect:函数,以实现这样的事情:
- (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); [image1.image drawInRect:image1.frame blendMode:kCGBlendModeMultiply alpha:1]; [image2.image drawInRect:image2.frame blendMode:kCGBlendModeMultiply alpha:1]; [super drawRect:rect]; }
它的作用是获取当前的graphicsContext,并使用乘法混合模式将两个图像绘制到其中.
为了能够看到这一点,您需要将两个图像的alpha设置为0,否则新绘制的内容将被遮挡.由于父视图正在重绘它们,因此您将看到生成的乘法版本.
此外,每当图像的位置更新时,您需要在父视图上调用setNeedsDisplay,以强制它再次调用drawRect.
我确信有可能更有效的方法来利用Quartz 2D来实现你想要的东西,但这可能是最简单的.