2012-08-30 12 views
8

मेरे पास एक ऑटो नियंत्रक के साथ एक निब है जिसमें व्यू कंट्रोलर के विचार शामिल हैं और अलग-अलग, प्लेसहोल्डर दृश्य वाले विंडो को इन्हें जोड़ने के लिए। प्लेसहोल्डर में इसके पर्यवेक्षण और खिड़की के अन्य दृश्यों के सापेक्ष बाधाएं हैं, और मेरे व्यू कंट्रोलर को शामिल करने से पहले, मेरे पास प्लेसहोल्डर विंडो के साथ आकार बदल रहा है। बाद में मैं निब लोड करता हूं और प्लेसहोल्डर के सबव्यूव के रूप में अपना शीर्ष-स्तरीय दृश्य जोड़ता हूं, और मैं प्लेसहोल्डर के किनारों पर गठबंधन रखने के लिए मैन्युअल रूप से बाधाएं भी बना देता हूं।Autolayout मेरी विंडो का आकार बदल रहा है

सभी अच्छे, और मैं अपने ऐप के भीतर कई उदाहरणों में इस पैटर्न का उपयोग कर रहा हूं, लेकिन कुछ मामलों में, दृश्य जोड़ने के बाद मेरी खिड़की का आकार बदल गया! यह खिड़की के वर्तमान आकार में विस्तार के दृश्य के बजाय अतिरिक्त दृश्य के लिए न्यूनतम आकार के लिए घट रहा है।

अभी तक मुझे रोकने के लिए एकमात्र तरीका यह है कि दृश्य जोड़ने और अपनी बाधाओं को बनाने के दौरान, दृश्य के फ्रेम को सेट करने के लिए इसे प्लेसहोल्डर और विंडो की वर्तमान स्थिति के लिए प्रारंभिक आकार देने के लिए भी सेट करें। यह ठीक है, लेकिन मैं उन बाधाओं को परिभाषित करने में सक्षम होना चाहता हूं जो अधिक जटिल हैं जो प्रत्येक किनारे को प्लेसहोल्डर पर्यवेक्षण में संरेखित करते हैं। मैं उन मामलों में से प्रत्येक के लिए फ्रेम अंकगणित कोड नहीं करना चाहता हूं।

क्या किसी को पता है कि क्या हो रहा है? यदि खिड़की पहले से ही मेरे प्लेसहोल्डर के आकार को निर्देशित कर रही है, तो दूसरी तरफ नहीं, वर्तमान विंडो आकार को अभी भी प्राथमिकता देने के लिए सबव्यू जोड़ते समय मुझे क्या करना है?

मैंने एक्सकोड की आईबी विंडोज़ में पॉप-अप मेनू देखा है जो कि केवल उप-दृश्यों को प्रभावित करने वाली बाधाओं के बारे में प्रतीत होता है, जो पर्यवेक्षण (मेरे सभी निब्स के लिए पूर्व में सेट) को प्रभावित करता है, क्या यह कार्यक्षमता से संबंधित हो रहा है? मुझे इसके बारे में और कुछ नहीं मिला है।

+0

साथ आप बस (प्लेसहोल्डर) कस्टम दृश्य पर एक चौड़ाई बाधा सेट नहीं कर सकता? – codingFriend1

+1

मुझे यह स्पष्ट करने के लिए मेरी पोस्ट संपादित की गई, मुझे उम्मीद है। खिड़की का आकार बदलते समय मेरे प्लेसहोल्डर को पहले से ही सही व्यवहार देने के लिए बाधाएं हैं। सबव्यू जोड़ते समय इसमें निश्चित आकार की बाधाओं को जोड़ना उसमें टूट जाएगा। –

+0

यदि आपकी बाधाएं सही हैं तो विंडो का आकार बदल जाएगा। –

उत्तर

9

आप NSLayoutPriorityWindowSizeStayPut से कम कुछ के लिए संपीड़न प्रतिरोध प्राथमिकता सेट करना चाहते हैं जो 500 है। इसका मतलब है कि खिड़की का आकार दृश्य के आकार पर प्राथमिकता लेता है।

आप इसे आईबी आकार निरीक्षक से सेट कर सकते हैं।

Compression resistance priority

या आप यह प्रोग्राम के रूप में सेट कर सकते हैं -[NSView setContentCompressionResistancePriority:forOrientation:]

+0

यह सही लगता है कि यह एक प्राथमिक मुद्दा है। हालांकि, इस पोस्टिंग को संकेत देने के मामले में, खिड़की जो अतिरिक्त सबव्यू की आवश्यकता थी उससे बड़ी थी। सबव्यूव संपीड़ित नहीं किया गया था, लेकिन इसके बजाय विस्तारित किया गया था (समस्या यह थी कि यह विस्तार नहीं हुआ था बल्कि बदले में खिड़की कम हो गई थी)। क्या इसका मतलब है कि संपीड़न प्रतिरोध प्राथमिकता खेल में नहीं आएगी? सामग्री को हॉगिंग प्राथमिकता के बजाय भी <500 पर सेट किया जाना चाहिए, या मैं उलझन में हूँ? (मैं लगभग एक साल के लिए ऑटो लेआउट के साथ काम कर रहा हूं और मुझे अभी भी प्राथमिकताओं के उन 2 सेटों के उद्देश्य को देखना मुश्किल लगता है)। –

+0

हां, आप सही हैं, प्राथमिकता सामग्री को प्राथमिकता देना <500 इसके बजाय होना चाहिए।संपीड़न प्रतिरोध प्राथमिकता का उपयोग तब किया जाता है जब अंतरिक्ष को कम करते समय दृश्य को कम करना चाहिए, और अंतरिक्ष को बढ़ाने के दौरान सामग्री को छेड़छाड़ करना चाहिए। खिड़की के रहने के साथ 500 की प्राथमिकता दी जाती है, तो कुछ भी <500 का मतलब है कि खिड़की का आकार जीतता है,> 500 दृश्य जीतता है – iain

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