हर बार UIView के drawRect को कॉल किया जाता है, पिछले drawRect (कोर ग्राफिक्स का उपयोग करके) द्वारा खींची गई सामग्री को साफ़ कर दिया जाता है। मैं इसे कैसे बना सकता हूं ताकि पिछले drawRect कॉल से प्रदान किए गए पथ तब तक बने रहें जब तक कि मैं इसे स्पष्ट रूप से साफ़ नहीं करता?UIView के drawRect को पिछले drawRect कॉल द्वारा खींचे गए पथों को साफ़ करने से कैसे रोकें?
उत्तर
आपको मूल रूप से अपने रेक्ट के 'गंदे' हिस्से को क्लिप करने की आवश्यकता है जहां परिवर्तन किए गए हैं, और केवल यह हिस्सा फिर से तैयार किया जाएगा।
- (void)setNeedsDisplayInRect:(CGRect)invalidRect
मुझे यकीन है कि इसके आसपास कोई रास्ता नहीं है; इस प्रकार UIView को काम करने के लिए डिज़ाइन किया गया है। यदि पूछा जाता है, तो आपका कस्टम व्यू किसी भी समय किसी भी हिस्से को आकर्षित करने में सक्षम होना चाहिए। यह आंशिक रूप से है क्योंकि विचार केवल स्क्रीन पर दिखाई देने से अधिक कर सकते हैं। जैसे डेस्कटॉप पर उन्हें मुद्रित किया जा सकता है, और यहां तक कि आईफोन पर भी, आप बिटमैप को देखने की सामग्री को कैप्चर करना चाहेंगे।
मैं अभी इस मुद्दे से लड़ रहा हूं। समस्या यह है कि "clearsContextBeforeDrawing" नामक UIView पर एक संपत्ति है कि दस्तावेज़ीकरण के अनुसार इस समस्या को ठीक करना है, हालांकि यह मेरे अनुभव में इस तरह से काम नहीं करता है।
मुझे लगता है कि आखिरकार इसका समाधान एक ऑफस्क्रीन बफर आवंटित करने जा रहा है और वहां मेरे सभी चित्रों को करने के लिए, फिर इसे drawRect विधि में UIView पर ले जाएं।
हां, यह अन्य समस्याओं को भी उठाता है: एक यह है कि आईफोन/आईपैड केवल आरजीबीए का समर्थन करता है और आरजीबी नहीं, इसलिए स्क्रीन को अपडेट करने के लिए आरजीबीए-> आरजीबी रूपांतरण (जो 99% समय लगता है।) प्लस, यह अभी भी UIView को साफ़ करेगा व्यर्थ में, बिल्कुल कोई उद्देश्य नहीं है। अगर कोई इन समस्याओं के आसपास एक रास्ता जानता है, तो कृपया पिंग करें! – gilm
मैंने सोचा कि ऑफस्क्रीन बफर का उपयोग समाधान भी हो सकता है (CGLayer/CGRect), लेकिन इसे करने के बाद इसे प्रदर्शन पर कोई उल्लेखनीय सुधार नहीं हुआ। ऐसा लगता है कि पूर्ण स्क्रीन संदर्भ ड्राइंग का कार्य ड्राइंग संचालन की जटिलता के बावजूद धीमा है। –
- 1. बेंचमार्क UIView drawRect: विधि
- 2. drawRect
- 3. drawRect
- 4. कब है - [UIView drawRect:] विधि शामिल है?
- 5. drawRect स्क्रीन
- 6. drawRect चित्रों के लिए एनिमेशन
- 7. सबव्यू के शीर्ष पर drawRect
- 8. UIView drawRect: क्या पथ के अंदर स्ट्रोक करना संभव है?
- 9. drawRect ड्राइंग 'पारदर्शी' पाठ?
- 10. आईफोन एसडीके: अभिविन्यास परिवर्तन के बाद UIView सबक्लास पर drawRect को कैसे ट्रिगर करें?
- 11. UIView की सामग्रीस्केल फैक्टर drawRect को लागू करने पर निर्भर करता है :?
- 12. drawRect सर्कल और एनिमेट आकार/रंग
- 13. SpriteBatch.DrawString द्वारा खींचे गए पाठ को संरेखित कैसे करें?
- 14. NSView subviews के साथ हस्तक्षेप drawRect?
- 15. drawRect में ढाल के साथ पथ कैसे भरें :?
- 16. मैं चेतन करना चाहते हैं, इस तथ्य फीका में, drawRect
- 17. UIView एनीमेशन को कैसे रोकें
- 18. UIView ओवरराइडिंग drawRect कारण मास्क का पालन न करने का कारण बनता है ToBounds
- 19. एक drawRect में NSString पाठ करने के लिए एक बूंद छाया जोड़ना: UILabel
- 20. drawRect में क्रैश - इसका क्या कारण है?
- 21. उपयोगकर्ता को पिछले 5 पासवर्ड का उपयोग करने से रोकें?
- 22. drawRect और इंटरफ़ेस बिल्डर के बीच रंग अंतर?
- 23. drawRect के बाहर NSView का CGContextRef प्राप्त करें?
- 24. आईओएस 5 UIView drawRect डिवाइस पर काम नहीं कर रहा है
- 25. ActivityUnitTestCase को एप्लिकेशन.ऑनक्रेट कॉल करने से कैसे रोकें?
- 26. विशेष तरीकों को कॉल करने से .NET कोड को रोकें?
- 27. स्क्रॉल ईवेंट को कॉल करने से स्क्रॉलटॉप को रोकें
- 28. जांच कर रहा है कि क्या NSButton drawRect
- 29. डीएलएल विधि कॉल को कैसे रोकें?
- 30. UIView: गैर विनाशकारी ड्राइंग कैसे करें?
समस्या यह नहीं है कि रेक्ट को फिर से नहीं खींचा जाता है, बल्कि जब drawRect को फिर से जारी किया जाता है, तो यह पिछले सभी तैयार पथों को साफ़ करता है। ऐसा लगता है कि कोर ग्राफिक के ड्राइंग दिनचर्या के साथ यह डिफ़ॉल्ट व्यवहार है। – Boon