使用核心图形获取具有渐变填充颜色的UIImage
问题描述:
我正在为UIImage创建一个类别,在该类别中,我传递图像并使用我提供的填充颜色获取该图像蒙版。现在我想添加渐变而不是单一颜色填充。以下是我如何使用单一填充颜色生成蒙版图像的方法。我怎样才能添加渐变,而不是单一的颜色?使用核心图形获取具有渐变填充颜色的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;
}
答
您可以通过下面的代码
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;
以获取更多信息添加渐变面具阅读苹果官方文档。为CAGradientLayer
我正在编程生成蒙版图像。您的解决方案不起作用。 –
意味着你的imageView是以编程方式? – Govaadiyo
我的意思是,我将以编程方式绘制图像。采用特定设计并在其中应用渐变蒙版。 –