2010-05-04 3 views
18

में प्रोग्रामेटिक रूप से drawRect को कॉल करने के लिए कैसे उद्देश्य सी में प्रोग्रामेटिक रूप से drawRect को कॉल करें?उद्देश्य सी

मैं अपने UItabbarcontroller में एक दृश्य की सही विधि को कॉल करना चाहता हूं। मैं यह कैसे कर सकता हूं ? अग्रिम धन्यवाद ..

संपादित

मैं जब दृश्य वर्तमान में दिखाई नहीं देता है कॉल करने के लिए की है। यह पहली बार होगा मैं उस दृश्य

+4

क्यों आप वास्तव में स्क्रीन पर डालने के बिना एक दृश्य आकर्षित करने के लिए चाहेगा? साथ ही, आपको कभी भी 'drawRect:' को कॉल नहीं करना चाहिए ('सुपर' को छोड़कर)। – bddckr

+0

मान लीजिए कि ऐप लॉन्च के बाद, मैं पहले टैब का चयन नहीं करता हूं। दूसरे टैब चयन से मैं सामग्री परिवर्तन के साथ पहला टैब दिखाना चाहता हूं। सामग्री परिवर्तन का मतलब है कि मुझे यूआईटीएक्स्टफील्ड इत्यादि को बदलना है अब क्या हो रहा है मेरे चुने हुए टैब का टेक्स्टफील्ड बदल नहीं रहा है। लेकिन मैं फिर से चयन किया यह बदल जाएगा। –

उत्तर

35
[myView.layer display]; 

बलों दृश्य ही सीधे आकर्षित करने के लिए कॉल करने के लिए की है।

[myView setNeedsDisplay: YES]; 

अगले ईवेंट लूप चक्र पर फिर से निकालने के लिए दृश्य को मजबूर करता है।

हालांकि, अगर आपको इसे दिखाई देने पर भी कॉल करने की आवश्यकता है, तो मुझे लगता है कि आपके व्यू क्लास के डिज़ाइन में कुछ गड़बड़ है। आपको केवल drawRect के अंदर ड्राइंग करना चाहिए: कुछ और नहीं। और यदि आप केवल ड्राइंग कर रहे हैं तो दृश्य क्यों दिखाई नहीं दे रहा है?

+0

संपादित किया है, जहां आप इसे स्क्रीन से रेंडर करना चाहते हैं, और यही वह समय है जब आप दृश्य की सामग्री का उपयोग करना चाहते हैं (उदाहरण के लिए इसका स्क्रीनशॉट लें, या कैश करें) और कैश या इसे कहीं और इस्तेमाल करें। मेरे मामले में, मैं उस दृश्य का एक स्क्रीनशॉट लेना चाहता हूं जो उपयोगकर्ता द्वारा आवश्यक रूप से नहीं देखा जाता है और उस दृश्य की छवि को डिस्क पर सहेजता है। – Kalle

+2

मुझे यकीन नहीं है कि मैं इस समाधान को समझता हूं। 'UIView' में 'डिस्प्ले' विधि नहीं है। –

+2

मैं भी इसी कारण से उलझन में हूं ... –

4
+0

उत्तर के लिए धन्यवाद। लेकिन setNeedsDisplay केवल तब कॉल करेगा जब दृश्य दिखाई दे। मेरी स्थिति में दृश्य दिखाई नहीं देगा। माफ़ कीजिये। मेरा सवाल भ्रामक था। मैंने अपना प्रश्न –

0

view.layer.renderInContext(context: CGContext) आपके दृश्य की सामग्री को CGContext में खींच सकता है, उदा। एक बिटमैप

view.snapshotViewAfterScreenUpdates(afterUpdates: Bool) आपको दृश्य का स्नैपशॉट देता है।

1

स्विफ्ट:

yourView.setNeedsDisplay() 

या

yourView.setNeedsDisplay(newRect)