2011-12-14 16 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]; 

यह कोड मैंने अभी तक लिखा है। सबसे पहले मैं चंद्रमा छवि के साथ परत बनाते हैं। फिर मैं कस्टम ड्राइंग के साथ दूसरी परत जोड़ता हूं जिसमें चंद्रमा का हिस्सा शामिल होना चाहिए। हालांकि contextRef अपनी पृष्ठभूमि को काला प्रदान करता है, इसलिए जब मैं दूसरी परत डालता हूं, तो पहले अदृश्य होता है। क्या मैं इसे हल कर सकता हूं? अभी तक कस्टम ड्राइंग को प्रोग्रामिक रूप से बनाने और इसे परत में जोड़ने का बेहतर तरीका है?आईफोन संदर्भ पृष्ठभूमि पारदर्शी कैसे करें?

उत्तर

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

इस तर्क को हल करने से मेरी समस्या हल हो जाती है।

+0

यदि आप सोच रहे हैं, तो यह तर्क 'अपारदर्शी' मान है: https://developer.apple.com/reference/uikit/1623912-uigraphicsbeginimagecontextwitho?language=objc – Senseful

संबंधित मुद्दे