iOS - 仅在非透明区域覆盖UIImage颜色?

时间:2016-03-17 16:16:12

标签: ios objective-c uiimage

我的中间有一个透明区域的白色图像,如下所示:

enter image description here

我想用颜色覆盖它(仅限非透明区域),所以它看起来像这样:

enter image description here

我该怎么做?

我调查了这个answer,但它覆盖了整个图像,包括非透明区域。

2 个答案:

答案 0 :(得分:0)

因此,您的图像实际上是一个"掩码"。使用" CGContextClipToMask"调用以及您引用的上述代码。

答案 1 :(得分:0)

尝试以下代码,它可以提供您想要的内容。

    UIGraphicsBeginImageContextWithOptions(imgView.image.size, YES, 0);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
    CGContextFillRect(context, (CGRect){ {0,0}, imgView.image.size} );

    CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, imgView.image.size.height);
    CGContextConcatCTM(context, flipVertical);
    CGContextDrawImage(context, (CGRect){ {0,0}, imgView.image.size }, [imgView.image CGImage]);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [imgView setImage:image];