2011-03-04 12 views
6

मैं आरबीएसप्लिट व्यू का उपयोग और प्यार करता था, हालांकि मैं इसे प्रोग्रामेटिक रूप से पुन: कार्यान्वित करने में असफल रहा क्योंकि एक्सकोड के एक निश्चित संस्करण अब आईबी प्लगइन्स का समर्थन नहीं करता है।प्रोग्रामेटिक रूप से आकार बदलना NSSplitView

इसलिए मैं NSSplitView का उपयोग करने के लिए वापस चला गया। NSSplitView मुझे जो चाहिए, उसके लिए ठीक है, बात यह है कि NSSplitView का ऑटोसेव टूटा हुआ है। तो मैंने इसे खुद को लागू करने का फैसला किया।

इस समय मैं जो काम कर रहा हूं वह एनएसएसप्लिट व्यू के सबव्यूज़ का आकार बदल रहा है।

उचित एक NSSplitView का आकार बदलने का तरीका क्या है? - setPositionOfDivider: itIndex: जाने का तरीका होना चाहिए (इसे आजमाया नहीं है), हालांकि मुझे नहीं पता कि विभाजक की वर्तमान स्थिति कैसे प्राप्त करें।

- अग्रिम

उत्तर

4

मेरे अनुभव में धन्यवाद, NSSplitView आप से नफरत करता है और आपको नुकसान पहुँचा चाहती है। RBSplitView इतना बेहतर है, यह आईएमओ प्रोग्रामेटिक लेआउट का सिरदर्द है (और मुझे शॉर्टकट रिकार्डर आईबी प्लगइन्स के साथ इतना जला दिया गया है कि मैं कभी भी आईबी प्लगइन्स पर वापस नहीं जाऊंगा)।

कहा ....

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

या RBSplitView पर वापस जाएं, जबकि आप अभी भी कर सकते हैं, यदि आपकी ज़रूरतें जटिल होंगी।

+0

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

+0

स्थिति = subView0.frame.size.height + subView0.frame.origin.x; काम करता है - वास्तविक कोड नहीं, लेकिन जिस तरह से मैंने किया और नौकरी –

+0

क्या है क्या आपका मतलब subView0.frame.size.width था? – ericg

1

मैं स्विफ्ट यहाँ का उपयोग कर रहा हूँ, लेकिन एक ही विधि का उद्देश्य सी में मौजूद होना चाहिए:

mySplitter.setPosition(123, ofDividerAtIndex: 0) 
संबंधित मुद्दे