2012-01-17 43 views
6

我想知道如何使UIImage的一個褪色角/邊成爲附加圖片。在UIImage(而不是動畫)上創建一個褪色的角/邊

我已經將它設置爲一個圖層幷包含如下的圓角,但是我可以淡入淡出或漸變它的代碼是什麼?

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

}

非常感謝你。

enter image description here

+0

是對邊緣漸變到白色的要求或爲他們褪色背景/透明? – 2012-01-17 23:15:06

+0

淡入背景/透明將是最好的。謝謝 – Clarence 2012-01-18 04:02:40

回答

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 2015-11-17 09:31:53

3

如果圖像的大小總是相同(或縱橫比保持不變),那麼你很可能最好用的CALayer面具實現這一點。

提前創建一個遮罩圖像(在photoshop或類似的工具中),它指定圖像的中心正方形應該完全不透明,並且邊緣應該與透明度混合。

在代碼中,您可以加載該圖像並創建一個CALayer掩碼,然後用它來掩蓋原始圖像。

對不起,我沒有任何代碼方便,但它可能會讓你開始!