2012-05-26 13 views
6

जब भी कोई निश्चित NSView का - (NSRect)visibleRect परिवर्तन होता है तो मैं अधिसूचित होना चाहता हूं क्योंकि मैं दृश्यमान आय के आधार पर कुछ फैंसी सबव्यू लेआउट करना चाहता हूं। वाकई, अभी मैं स्टंप हो गया हूँ; -visibleRect केवीओ नोटिफिकेशन (जो समझ में आता है) को उत्सर्जित नहीं करता है, और ऐसा लगता है कि दृश्यमान संदर्भ बदल गया है या स्पष्ट रूप से -visibleRect पर कॉल किए बिना नहीं पता लग रहा है।क्या यह देखना संभव है -visibleRect

क्या यह सब संभव है? (या यह एक भयानक, भयानक विचार है?)

+1

शून्य से 1 क्यों? – Vervious

उत्तर

6

मुझे लगता है कि आप या तो -[NSView updateTrackingAreas] ओवरराइड कर सकते हैं या NSViewDidUpdateTrackingAreasNotification सुन सकते हैं। वे दृश्यमान आय में बदलाव के मुकाबले अधिक मौकों पर हो सकते हैं, लेकिन वे दृश्यमान आय के किसी भी बदलाव के लिए होना चाहिए। मुझे लगता है।

यह कहा गया, यह एक भयानक विचार हो सकता है। जानना मुश्किल है। :)

+0

व्यावहारिक, धन्यवाद। – Vervious

+0

अच्छा सवाल और उत्तर। इस जवाब ने मुझे एक अलग समस्या से सामना करने में मदद की, लेकिन मेरे पास यह प्रश्न भी है। और इस सवाल के लिए मैं इस जवाब को वोट दूंगा लेकिन इसे स्वीकार नहीं करता हूं। – trss

+0

'अपडेटट्रैकिंग एरिया' के लिए दस्तावेज़ कहते हैं, "जब दृश्य की ज्यामिति इस तरह बदलती है तो इसके स्वचालित क्षेत्रों को फिर से गणना करने की आवश्यकता होती है।" लेकिन यह स्पष्ट नहीं है कि दृश्य की ज्यामिति का अर्थ क्या है। व्यू ज्यामिति पर एक विषय है लेकिन यह केवल सीमाएं और फ्रेम बताता है। यह visualRect को समझाता है लेकिन यह इसे दृश्य की ज्यामिति के रूप में नहीं कहता है। – trss

1

10.5 के बाद एक अन्य विकल्प -व्यूविल्लड्रा विधि है जिसे दृश्य (और इसके सबव्यू) को खींचा जाने से पहले कहा जाता है। आप व्यू के दृश्य आयताकार को ला सकते हैं और [सुपर व्यूविल्लड्रा] कॉल करने से पहले लेआउट कर सकते हैं।

0

ट्रैकिंग क्षेत्र परिवर्तनों को सुनने के केन के सुझावों में हैकी लगता है लेकिन काम करने लगता है, हालांकि वे आकार बदलने के बाद ही ट्रिगर होते हैं। यदि आपको आकार बदलने के दौरान अपडेट की आवश्यकता है, तो यह -[NSView resizeWithOldSuperviewSize:] ओवरराइड कर देगा

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