2012-01-17 16 views
6

(ないアニメーション)UIImageに色あせたコーナー/サイドを作成します。私は添付画像としてUIImageのフェージングコーナー/サイドを作ることができる方法を知っていただきたいと思い

私はレイヤーとして設定し、以下のように丸いコーナーを含むが、私はそれをフェードやグラデーションできるコードは何がありますか?

-(void) viewDidLoad{ 
[super viewDidLoad]; 
CALayer * layer = [image layer]; 
[layer setMasksToBounds:YES]; 
[layer setCornerRadius:10.0]; 

}

ありがとうございました。

enter image description here

+0

はエッジが白にフェードするための必要条件であるマスクするために、次のコードを使用し、透明性に向けてブレンドまたはそれらのためにする必要があり、完全に不透明センターとエッジでマスクを作成/トランスペアレント? –

+0

は、背景/透明にフェードするのが最適です。おかげ – Clarence

答えて

6

が背景にフェードする

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef imgRef = [image CGImage]; 
    CGImageRef maskRef = [maskImage CGImage]; 
    CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
               CGImageGetHeight(maskRef), 
               CGImageGetBitsPerComponent(maskRef), 
               CGImageGetBitsPerPixel(maskRef), 
               CGImageGetBytesPerRow(maskRef), 
               CGImageGetDataProvider(maskRef), NULL, false); 
    CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask); 
    return [UIImage imageWithCGImage:masked]; 

} 
+0

私はプログラム的に行く上でのマスクの同じ種類を作成できますか?私の場合、UIImageのサイズは変わり、マスクは毎回同じサイズになることはありません! – Nil

3

あなたのイメージのサイズは常に同じである(またはアスペクト比は同じまま)なら、あなたはおそらく最高のCALayerマスクを使用して、これを実装しようとしています。画像の中央広場は完全に不透明でなければならないことと、エッジが透明性に向けてブレンドする必要があることを指定します(Photoshopや同様のツールで)マスク画像を作成することになり、時間の

控え。

のコードでは、このイメージをロードし、その後、元の画像をマスクするために使用するのCALayerマスクを作成すると思います。

私は、このための便利な任意のコードを持っていないごめんなさいそれはあなたが始めるかもしれません!上記の答えを拡張

関連する問題