ios – 使用Multiply混合模式覆盖UIImageViews?

前端之家收集整理的这篇文章主要介绍了ios – 使用Multiply混合模式覆盖UIImageViews?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有2个UI ImageViews显示在彼此之上.其中一个可以使用手势识别器拖动.

有没有一种方法可以使用像Multiply这样的混合模式渲染ImageViews?这样当它们移动到每个上面时,它们会以混合模式渲染?

@H_404_5@解决方法
你必须覆盖父视图上的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来实现你想要的东西,但这可能是最简单的.

原文链接:https://www.f2er.com/iOS/334042.html

猜你在找的iOS相关文章