2011-12-14 3 views
19
CALayer *sublayer = [CALayer layer]; 
/*sublayer.backgroundColor = [UIColor blueColor].CGColor; 
sublayer.shadowOffset = CGSizeMake(0, 3); 
sublayer.shadowRadius = 5.0; 
sublayer.shadowColor = [UIColor blackColor].CGColor; 
sublayer.shadowOpacity = 0.8;*/ 
sublayer.frame = CGRectMake(30, 100, 256, 256); 
sublayer.contents = (id)[[UIImage imageNamed:@"moon.png"] CGImage]; 
[self.view.layer addSublayer:sublayer]; 
//self.view.backgroundColor = [UIColor blackColor]; 

//add moon mask 
UIGraphicsBeginImageContextWithOptions(CGSizeMake(400, 400), YES, 1); 
CGContextRef contextRef = UIGraphicsGetCurrentContext(); 
CGContextClearRect(contextRef, CGRectMake(0, 0, 400, 400)); 
CGContextSetRGBFillColor(contextRef, 1, 1, 1, 0.8); 
CGContextSetRGBStrokeColor(contextRef, 0, 0, 0, 0.5); 
CGRect ellipse = CGRectMake(50, 50, 128, 128); 
CGContextAddEllipseInRect(contextRef, ellipse); 
CGContextFillEllipseInRect(contextRef, ellipse); 

CALayer* sublayer2 = [CALayer layer]; 
sublayer2.frame = CGRectMake(30, 100, 256, 256); 
sublayer2.backgroundColor = [UIColor clearColor].CGColor; 
sublayer2.contents = (id)[UIGraphicsGetImageFromCurrentImageContext() CGImage]; 
[self.view.layer addSublayer:sublayer2]; 

Questo è il codice che ho scritto finora. Per prima cosa creo dei livelli con l'immagine della luna. Poi aggiungo il secondo strato con un disegno personalizzato che dovrebbe coprire parte della luna. Comunque contextRef rende il suo sfondo nero, quindi quando metto il secondo livello, il primo è invisibile. C'è un modo in cui posso risolvere questo? Meglio ancora c'è un modo migliore per fare un disegno personalizzato programmaticamente e aggiungerlo al livello?Iphone Come rendere trasparente il contesto?

risposta

49
UIGraphicsBeginImageContextWithOptions(CGSizeMake(400, 400), NO, 1); 

L'impostazione di questo argomento su NO risolve il problema.

+0

Nel caso ve lo stiate chiedendo, tale argomento è il valore 'opaque': https://developer.apple.com/reference/uikit/1623912-uigraphicsbeginimagecontextwitho?language=objc – Senseful