2010-05-13 9 views
9

के दौरान तुरंत UIView को फिर से निकालने के लिए मजबूर करें, मैंने स्नैपशॉट लेने के लिए टूलबार और कस्टम बटन के साथ एक UIImagePicker/कैमरा दृश्य बनाया है। कस्टम बटन की वजह से मैं वास्तव में डिफ़ॉल्ट तरीके से उपयोग नहीं कर सकता, और मैं दृश्य के शीर्ष पर चित्रित कर रहा हूं।अगली रन लूप

जब आप बटन दबाते हैं, तो मैं UIGetScreenImage() का उपयोग करके एक स्क्रीनशॉट लेना चाहता हूं; हालांकि, उपकरण पट्टी छवि में दिखाया गया है, भले ही मैं यह पहली बार छिपाने:

//hide the toolbar 
self.toolbar.hidden = YES; 

// capture the screen pixels 
CGImageRef screenCap = UIGetScreenImage(); 

मैं यकीन है कि इस वजह से भले ही उपकरण पट्टी छिपा हुआ है, यह एक बार समारोह रिटर्न दोबारा बनाई हो जाता हूँ और हम में प्रवेश अगली रन लूप - UIGetScreenImage के बाद कहा जाता है।

मैं निम्नलिखित इसके अलावा बनाने की कोशिश की है, लेकिन यह मदद नहीं की:

//hide the toolbar 
self.toolbar.hidden = YES; 
[self.toolbar drawRect:CGRectMake(0, 0, 320, 52)]; 

// capture the screen pixels 
CGImageRef screenCap = UIGetScreenImage(); 

मैं भी setNeedsDisplay उपयोग करने की कोशिश, लेकिन वह काम नहीं करता, क्योंकि या तो एक बार फिर से ड्रा वर्तमान समारोह रिटर्न के बाद होता है।

कोई सुझाव? धन्यवाद!

उत्तर

3

एक अलग चयनकर्ता में UI तत्व छिपा है, और -performSelectorOnMainThread:withObject:waitUntilDone: पद्धति का उपयोग करके, waitUntilDone तर्क के लिए YES का उपयोग करें। फिर स्क्रीन कैप्चर के लिए एक और चयनकर्ता के साथ इसका पालन करें।

+0

यह अकेले ऐसा नहीं किया, लेकिन एक मामूली जोड़ा यह काम कर रहा है। मैंने स्क्रीन कैप्चर चयनकर्ता को [स्वयं प्रदर्शन चयनकर्ता: @ चयनकर्ता (कैप्चरस्क्रीन) के साथ बुलाया ओब्जेक्ट: शून्य बाद के बाद: 0]; और यह काम पूरा हो गया। नेतृत्व के लिए धन्यवाद! –

+0

[स्वयं प्रदर्शन चयनकर्ता: @ चयनकर्ता (कैप्चरस्क्रीन) के साथ ऑब्जेक्ट: शून्य बाद के बाद: 0]; वास्तव में अगले रन लूप पर "कैप्चरस्क्रीन" चलाता है। –

8

अद्यतन रन लूप में किया जाता है।

सीधे शब्दों में जोड़ें:

self.toolbar.hidden = हाँ;

[[NSRunLoop currentRunLoop] runUntilDate: [NSDate दिनांकविथटाइमइंटरवालसेन नाउ: 0.01]];

CGImageRef स्क्रीनकैप = UIGetScreenImage();

+0

यह नौकरी करता है और लागू करने के लिए आसान है, धन्यवाद एंटोनी। –

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