को फिर से खींचा जा सकता है I विधि में अपना स्वयं का चित्र प्रदान करने के लिए कैलियर को उप-वर्गीकृत कर रहा हूं। अनुकूलन के लिए मैं -[MyLayer setNeedsDisplay]
के बजाय -[MyLayer setNeedsDisplayInRect:]
पर कॉल करता हूं। ड्राइंग विधि में मुझे आयत मिलती है जिसे CGContextGetClipBoundingBox()
के माध्यम से फिर से खींचा जाना चाहिए।- [CALayer setNeedsDisplayInRect:] पूरे परत को
यदि मैं इस परत को आधार परत के रूप में उपयोग करता हूं तो प्रत्येक चीज़ अपेक्षा के अनुसार काम करती है। समस्या उत्पन्न होती है, जैसे ही मैं अपनी कस्टम परत का उपयोग किसी अन्य कैलियर के उपन्यास के रूप में करता हूं। CGContextGetClipBoundingBox()
से हमेशा उस परत की सीमाओं के आयत को वापस कर देता है।
कोई विचार?
[संपादित करें]
ऐसा लगता है, कोई गारंटी नहीं है कि, कि CALayer की सामग्री कैश किया गया है और केवल गंदा हिस्सा फिर से ताज़ा हो जाता है। मैंने एक छोटा परीक्षण किया और उस आय को संग्रहित किया जिसे एक अलग संपत्ति के रूप में प्रदर्शित करने की आवश्यकता है। नतीजा यह था कि स्क्रीन पर केवल यह हिस्सा दिखाई दे रहा था।
अब मैं एक छवि संदर्भ प्रस्तुत करूँगा और उस छवि को कैश के रूप में रखूंगा। ड्रॉ विधि में मैं केवल कैश की गई छवि प्रदर्शित करूंगा।
क्या गैर-दृश्य परतों में उनके 'मास्क टॉबाउंड्स' संपत्ति को 'YES' पर सेट किया गया है? यदि नहीं, तो एक अच्छा कारण है कि वे क्लिप क्यों नहीं करेंगे। – MrMage
दुर्भाग्यवश यह हल नहीं करता है। समस्या यह है कि, 'CGContextGetClipBoundingBox() 'परत की सीमाएं लौटाता है, न कि क्षेत्र जिसे ऐप्पल द्वारा दस्तावेज के रूप में अपडेट किया जाना चाहिए: * उप-वर्ग जो वास्तविक क्षेत्र को आकर्षित करने के लिए खोजना चाहते हैं, CGContextGetClipBoundingBox को कॉल कर सकते हैं। * [DrawIncontext:] (https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html#//apple_ref/occ/instm/CALayer/drawInContext :) –
क्या आप कभी भी गए थे इस के नीचे? मुझे एक ही परेशान मुद्दा है। – mprivat