使用核心图形获取具有渐变填充颜色的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

+0

我正在编程生成蒙版图像。您的解决方案不起作用。 –

+0

意味着你的imageView是以编程方式? – Govaadiyo

+0

我的意思是,我将以编程方式绘制图像。采用特定设计并在其中应用渐变蒙版。 –