2017-09-06 11 views
1

이미지를 전달하고 내가 제공 한 채워진 색상으로 이미지화 된 마스크를 얻는 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; 
} 

답변

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; 

으로 그라데이션 마스크를 추가 할 수 있습니다. CAGradientLayer

+0

나는 프로그래밍 방식으로 마스크 이미지를 생성 중입니다. 당신의 해결책은 효과가 없을 것입니다. –

+0

귀하의 imageView는 프로그래밍 방식을 의미합니까? – Govaadiyo

+0

제 말은 프로그래밍 방식으로 이미지를 그릴 것입니다. 특정 디자인 및 그것에 그라디언트로 마스크를 적용하십시오. –