2010-09-28 14 views
5

मैंने CALayer बनाया है (मैंने परत में कई आकार जोड़े हैं, लेकिन आखिरकार, मेरे पास एक एकल कैलियर है), और मुझे इसे CGImage में जोड़ने में बहुत परेशानी हो रही है। मुझे [CALayer renderInContext:ctx] पर कुछ संदर्भ मिले हैं, लेकिन मुझे यकीन नहीं है कि इसे कैसे कार्यान्वित किया जाए।सीएएलएमेज (या यूआईएममेज) एक कैलियर

किसी को भी इस से पहले किया गया है?

उत्तर

11

इस प्रयास करें ...

UIGraphicsBeginImageContext(layer.bounds.size); 
[layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

नहीं थ्रेड-सुरक्षित पूर्व ओएस 4.0, blah blah, lalala ... –

+0

नवीनतम डॉक्स राज्य है कि सभी 'UIGraphics * Context' कार्यों केवल (ताकि मुख्य थ्रेड हैं करने के लिए वे किसी ओएस संस्करण पर थ्रेड सुरक्षित नहीं हैं)। 'CGBitmapContextCreate' थ्रेड-सुरक्षित कोरग्राफिक्स फ़ंक्शन है जो 'UIGraphicsBeginImageContext' के शीर्ष पर बनाया गया है। – rpetrich

+0

दस्तावेज़ों से भी: चर्चा आपको यह फ़ंक्शन केवल तभी कॉल करना चाहिए जब बिटमैप-आधारित ग्राफिक्स संदर्भ वर्तमान ग्राफिक्स संदर्भ है। यदि वर्तमान संदर्भ शून्य है या UIGraphicsBeginImageContext पर कॉल द्वारा नहीं बनाया गया था, तो यह फ़ंक्शन शून्य लौटाता है। – TomH

1

बिटमैप ग्राफिक्स संदर्भ बनाएं और इसमें परत खींचने के लिए renderInContext: का उपयोग करें। अब आपके पास एक छवि में परत है।

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