2016-07-18 17 views
5

This can't be impossible to dosizeThatFits (फ्रेम लेआउट दृश्य के अंदर ऑटो लेआउट दृश्य)

देखें एक लेआउट यह गणना और layoutSubviews में अपने फ्रेम की स्थापना करके subviews है।

देखें बी लेआउट के सबूतों के लिए बाधाओं का उपयोग करता है।

देखें ए में कई व्यू बी उदाहरण शामिल हैं।

देखें कि जब इसे लेआउट किया जाता है तो इसके सबव्यूज़ के आकार को जानने की आवश्यकता होती है, इसलिए यह sizeThatFits: पर कॉल करता है।

देखें बी की ऊंचाई इसकी चौड़ाई पर निर्भर करती है। मेरे उदाहरण में इसमें एक मल्टीलाइन UILabel है।

यह कैसे sizeThatFits: तो यह सही आकार देता है दोनों size पैरामीटर sizeThatFits: और खाते में कमी के पारित कर दिया नहीं ले रहा है को लागू बी चाहिए?

मैं क्या कोशिश की है/अब तक माना जाता:

systemLayoutSizeFittingSize: - काम नहीं करता है, क्योंकि यह खाते में एक सटीक आकार इसे करने के लिए पारित किया नहीं ले करता है। इसका उपयोग किसी दृश्य के लिए सटीक चौड़ाई निर्दिष्ट करने के लिए नहीं किया जा सकता है जो लंबवत रूप से बढ़ता है क्योंकि यह क्षैतिज रूप से घटता है। यह केवल सबसे संकुचित आकार या सबसे विस्तारित आकार देता है।

intrinsicContentSize - यह जहाँ तक मैं डॉक्स से समझ में जानकारी ऑटो लेआउट को पारित करने के लिए प्रयोग किया जाता है। हम क्या चाहते हैं ऑटो लेआउट से प्राप्त करना है।

इस प्रकार मैंने अभी तक तर्क दिया है। अगर मैंने गलती की है तो कृपया मुझे सही करें। और कृपया मेरी मदद करें, अगर कोई मुझे यह बता सकता है कि यह कैसे किया जाता है तो मैं बहुत आभारी हूं!

संपादित करें: इसके अलावा, शायद sizeThatFits: का उपयोग किए बिना ऐसा करने का कुछ अलग तरीका है? मेरे पास एकमात्र आवश्यकता यह है कि मैं "बाहरी दृश्य" (देखें ए) में फ्रेम लेआउट का उपयोग करना जारी रख सकता हूं और "आंतरिक दृश्य" (देखें बी) में ऑटो लेआउट जारी रख सकता हूं।

EDIT2: सटीक मामले वर्णन करने के लिए एक तस्वीर जोड़ी मैं हल करना चाहिए

edit3:, मैं 7.0

+0

आप अपने विचारों को अपने विचारों को जोड़ने के लिए बाधा क्यों नहीं डालते हैं ए और आपके दृश्य की प्राथमिकता को प्राथमिकता से जोड़ना लंबवत सामग्री को कम करना? – RomOne

+0

इसके अलावा, यदि आप इस तरह से चुनते हैं, तो सुनिश्चित करें कि आपके सभी बी विचारों में शीर्ष और नीचे की बाधाएं सभी दृश्यों को एक साथ जोड़ती हैं, ताकि ए को पता चले कि कैसे आकार बदलना है;) – RomOne

+0

लेकिन यह व्यू ए में ऑटो लेआउट का उपयोग करेगा, और मैं व्यू बी में बाधाओं का उपयोग करते समय व्यू ए में कोड (फ्रेम लेआउट) का उपयोग करके मनमाने ढंग से विचारों को स्थिति में रखने में सक्षम होना चाहिए। निश्चित रूप से, चित्र में लेआउट आसानी से ऑटो लेआउट के साथ हासिल किया जाता है, लेकिन कभी-कभी लेआउट ' टी बाधाओं में व्यक्त नहीं किया जा सकता है, और मैं यह जानना चाहता हूं कि ऐसी परिस्थितियों के लिए यह कैसे किया जाता है। –

उत्तर

0

चित्र यह जाहिर होता है कि एक UIStackView एक बेहतर हो सकता है से आईओएस समर्थन करने की आवश्यकता का उल्लेख भूल व्यू ए के लिए दृष्टिकोण?

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/

और फिर बस एक मार्जिन के साथ विवश पिछले दृश्य B

+1

UIStackView आईओएस 9.0 –

+0

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

0

मैं बहुत autolayout का प्रयोग करेंगे की तह तक दृश्य A UIStackView के नीचे ऑफसेट। आप अभी भी सटीक आकार और स्थिति निर्दिष्ट कर सकते हैं, आप इसे फ्रेम के बजाय बाधाओं के साथ करते हैं।

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