2009-02-28 8 views
5

हर बार UIView के drawRect को कॉल किया जाता है, पिछले drawRect (कोर ग्राफिक्स का उपयोग करके) द्वारा खींची गई सामग्री को साफ़ कर दिया जाता है। मैं इसे कैसे बना सकता हूं ताकि पिछले drawRect कॉल से प्रदान किए गए पथ तब तक बने रहें जब तक कि मैं इसे स्पष्ट रूप से साफ़ नहीं करता?UIView के drawRect को पिछले drawRect कॉल द्वारा खींचे गए पथों को साफ़ करने से कैसे रोकें?

उत्तर

3

आपको मूल रूप से अपने रेक्ट के 'गंदे' हिस्से को क्लिप करने की आवश्यकता है जहां परिवर्तन किए गए हैं, और केवल यह हिस्सा फिर से तैयार किया जाएगा।

- (void)setNeedsDisplayInRect:(CGRect)invalidRect 
+2

समस्या यह नहीं है कि रेक्ट को फिर से नहीं खींचा जाता है, बल्कि जब drawRect को फिर से जारी किया जाता है, तो यह पिछले सभी तैयार पथों को साफ़ करता है। ऐसा लगता है कि कोर ग्राफिक के ड्राइंग दिनचर्या के साथ यह डिफ़ॉल्ट व्यवहार है। – Boon

0

मुझे यकीन है कि इसके आसपास कोई रास्ता नहीं है; इस प्रकार UIView को काम करने के लिए डिज़ाइन किया गया है। यदि पूछा जाता है, तो आपका कस्टम व्यू किसी भी समय किसी भी हिस्से को आकर्षित करने में सक्षम होना चाहिए। यह आंशिक रूप से है क्योंकि विचार केवल स्क्रीन पर दिखाई देने से अधिक कर सकते हैं। जैसे डेस्कटॉप पर उन्हें मुद्रित किया जा सकता है, और यहां तक ​​कि आईफोन पर भी, आप बिटमैप को देखने की सामग्री को कैप्चर करना चाहेंगे।

1

मैं अभी इस मुद्दे से लड़ रहा हूं। समस्या यह है कि "clearsContextBeforeDrawing" नामक UIView पर एक संपत्ति है कि दस्तावेज़ीकरण के अनुसार इस समस्या को ठीक करना है, हालांकि यह मेरे अनुभव में इस तरह से काम नहीं करता है।

मुझे लगता है कि आखिरकार इसका समाधान एक ऑफस्क्रीन बफर आवंटित करने जा रहा है और वहां मेरे सभी चित्रों को करने के लिए, फिर इसे drawRect विधि में UIView पर ले जाएं।

+1

हां, यह अन्य समस्याओं को भी उठाता है: एक यह है कि आईफोन/आईपैड केवल आरजीबीए का समर्थन करता है और आरजीबी नहीं, इसलिए स्क्रीन को अपडेट करने के लिए आरजीबीए-> आरजीबी रूपांतरण (जो 99% समय लगता है।) प्लस, यह अभी भी UIView को साफ़ करेगा व्यर्थ में, बिल्कुल कोई उद्देश्य नहीं है। अगर कोई इन समस्याओं के आसपास एक रास्ता जानता है, तो कृपया पिंग करें! – gilm

+0

मैंने सोचा कि ऑफस्क्रीन बफर का उपयोग समाधान भी हो सकता है (CGLayer/CGRect), लेकिन इसे करने के बाद इसे प्रदर्शन पर कोई उल्लेखनीय सुधार नहीं हुआ। ऐसा लगता है कि पूर्ण स्क्रीन संदर्भ ड्राइंग का कार्य ड्राइंग संचालन की जटिलता के बावजूद धीमा है। –

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