2012-01-17 7 views
6

Vorrei sapere come posso creare un angolo di dissolvenza/lato di un'immagine UII come l'immagine allegata.Creare angoli/lati sbiaditi su UIImmagine (non animazione)

L'ho impostato come livello e contenente angoli arrotondati come sotto, ma qual è il codice che posso sfumare o sfumare?

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

}

La ringrazio molto.

enter image description here

+0

È l'obbligo per i bordi di dissolvenza al bianco o per loro di svanire a sfondo/trasparente? –

+0

dissolvenza su sfondo/trasparente sarà il migliore. Grazie – Clarence

risposta

6

Estendere la risposta di cui sopra creare maschera con il centro completamente opaco e bordi dovrebbe fondersi verso la trasparenza quindi utilizzare seguente codice per mascherare

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

Posso creare lo stesso tipo di maschera in modo programmatico mentre sei in movimento? Nel mio caso le dimensioni di UIImage variano e la maschera non può essere della stessa dimensione ogni volta! – Nil

3

Se la dimensione della vostra immagine è sempre la stessa (o il rapporto di aspetto rimane lo stesso) allora siete probabilmente meglio l'applicazione del presente usando una maschera CALayer.

Prima del tempo si creerebbe un'immagine maschera (in Photoshop o strumento simile) che specifica che il quadrato centrale dell'immagine deve essere completamente opaco e che i bordi devono fondersi con la trasparenza.

Nel codice si carica questa immagine e si crea una maschera CALayer che si utilizza per mascherare l'immagine originale.

Mi dispiace, non ho alcun codice a portata di mano per questo, ma potrebbe farti iniziare!