2017-09-06 2 views
1

私は画像を渡し、私が提供した塗りつぶした色でそのイメージングされたマスクを取得するUIImage用の1つのカテゴリを作成しています。今度は、単色の塗りつぶしの代わりにグラデーションを追加したいと思います。以下は、どのように単一の塗りつぶし色でマスクされたイメージを生成する方法です。どのようにして単一色ではなくグラデーションを追加できますか?コアグラフィックを使用してグラデーションの塗りつぶしカラーで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

あなたは、Appleの公式ドキュメントを読んでより多くの情報については、以下のコード

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

私は、プログラムで画像を描くことを意味します。特定のデザインとそれにグラデーションを適用したマスク。 –

関連する問題