2012-01-17 10 views
6

Me gustaría saber cómo puedo hacer una esquina/lado difuminado de un UIImage como la imagen adjunta.Crear esquinas/lados desvaídos en UIImage (no animación)

Lo he configurado como una capa y contiene las esquinas redondeadas como a continuación, pero ¿cuál es el código que puedo desvanecer o degradar?

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

}

Muchas gracias.

enter image description here

+0

es el requisito para los bordes de Fundido a blanco o para ellos a desvanecerse a fondo/¿transparente? –

+0

fundido al fondo/transparente será el mejor. Gracias – Clarence

Respuesta

6

La extensión de la respuesta anterior Crear máscara con el centro totalmente opaco y los bordes deben mezclar hacia la transparencia a continuación, utilizar siguiente código para enmascarar

- (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

¿Puedo crear el mismo tipo de máscara programáticamente en el camino? ¡En mi caso, el tamaño del UIImage varía y la máscara no puede ser del mismo tamaño todo el tiempo! – Nil

3

Si el tamaño de la imagen es siempre la misma (o la relación de aspecto se mantiene igual), entonces usted está probablemente mejor aplicación de la presente usando una máscara CALayer.

Antes de tiempo, crearía una imagen de máscara (en photoshop o herramienta similar) que especifica que el cuadrado central de la imagen debería ser completamente opaco y que los bordes deberían difuminarse hacia la transparencia.

En el código cargaría esta imagen y crearía una máscara CALayer que luego usaría para enmascarar la imagen original.

Disculpa, no tengo ningún código a mano para esto, pero podría ayudarte a empezar.

Cuestiones relacionadas