使用核心图形获取具有渐变填充颜色的UIImage

时间:2017-09-06 09:32:40

标签: ios objective-c uiimage core-graphics

我正在为UIImage创建一个类别,我在其中传递一个图像并获得我提供的填充颜色的图像蒙版。现在我想添加渐变而不是单色填充。下面是我如何使用单个填充颜色生成蒙版图像的方法。如何添加渐变而不是单色?

- (UIImage *)imageMaskedWithGradientColor:(UIColor *)maskColor
{
    NSParameterAssert(maskColor != nil);

        CGRect imageRect = CGRectMake(0.0f, 0.0f, self.size.width, self.size.height);
        UIImage *newImage = nil;

        UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, self.scale);
        {
            CGContextRef context = UIGraphicsGetCurrentContext();

            CGContextScaleCTM(context, 1.0f, -1.0f);
            CGContextTranslateCTM(context, 0.0f, -(imageRect.size.height));

            CGContextClipToMask(context, imageRect, self.CGImage);
            CGContextSetFillColorWithColor(context, maskColor.CGColor);
            CGContextFillRect(context, imageRect);

            newImage = UIGraphicsGetImageFromCurrentImageContext();
        }
        UIGraphicsEndImageContext();

        return newImage;
}

1 个答案:

答案 0 :(得分:0)

您可以通过以下代码添加渐变蒙版

CAGradientLayer *gradientMask = [CAGradientLayer layer];
gradientMask.frame = self.myImageView.bounds;
gradientMask.colors = @[(id)[UIColor whiteColor].CGColor,
                        (id)[UIColor clearColor].CGColor];  // Change colors as you want
self.myImageView.layer.mask = gradientMask;

欲了解更多信息,请阅读Apple官方文档。 CAGradientLayer