2011-09-15 20 views
5

अपनी मूल परत के निचले बाएं कोने में खींचा गया एक छोटा लाल बॉक्स (CALayer उदाहरण) की कल्पना करें (जो एक परत होस्टिंग NSView की परत परत है)।अभिभावक NSView का आकार बदलते समय एक ही स्थिति में कैलियर को कैसे रखा जाए?

जब पैरेंट दृश्य का फ्रेम बदलता है, तो लाल बॉक्स स्क्रीन पर एक ही स्थिति में रहना चाहिए। मैं इसे मूल दृश्य के निचले बाएं कोने के सापेक्ष इसकी स्थिति समायोजित करके करता हूं।

समस्या यह है कि कुछ मामलों में झिलमिलाहट होती है और मैं सही स्थिति में दिखाए जाने से पहले विस्तारित फ्रेम के निचले बाएं कोने में खींची गई लाल बॉक्स परत को देख सकता हूं।

मुझे लगता है कि एक CATransaction में फ्रेम और स्थिति परिवर्तन को लपेटने से दोनों बदलाव एक साथ हो जाएंगे, लेकिन यह हमेशा काम नहीं करता है (दस्तावेज़ कहते हैं कि लेनदेन का उपयोग करके एनिमेशन एक ही समय में शुरू हो जाएंगे, लेकिन अभी भी कई बार दौड़ की स्थिति प्रतीत होता है)।

बच्चे की परत को इसकी अनुमानित स्थिति में रखते हुए मैं माता-पिता NSView के फ्रेम को कैसे समायोजित कर सकता हूं?

उदाहरण और कोड:

NSView and box layer

मेरा अपना विचार:

  1. छिपाएं लाल बॉक्स परत, स्थिति अद्यतन करते हैं, इसे फिर से

  2. उपयोग दिखाने दाएं कोने में बांधने के लिए बाधाएं। समस्या यह है कि यह ऑफसेट भी बदल सकता है और मुझे उस बाधा को अपडेट करना होगा जो एक ही झटकेदार मुद्दे को जन्म दे सकता है।

उत्तर

0

उस कोड को हटाने का प्रयास करें जिसे आपने पहले से ही परत के दृश्य के साथ ले जाने के लिए बनाया है और इसे जहां आप परत बना रहे हैं उसे डाल दें।

boxLayer.autoresizingMask = kCALayerMaxXMargin | kCALayerMinYMargin; 

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

  • कोई संबंधित समस्या नहीं^_^