सबसे पहले, आप वास्तव में इस के लिए एक स्टेक दृश्य की जरूरत है:
कोड में, आप इस तरह यह कर सकता है (आईओएस 9.0 पर या बाद में)? आनुपातिक ऊंचाई बाधाओं का उपयोग करके इसे आसानी से व्यवस्थित करना बहुत आसान होगा।
हालांकि, आप कर सकते हैं यदि आप वास्तव में एक स्टैक व्यू का उपयोग करना चाहते हैं तो स्टैक व्यू के साथ ऐसा करें। रहस्य यह है कि प्रश्न में "वजन" बस व्यवस्थित दृश्य intrinsicContentSize().height
है।
उन, प्रदर्शन के प्रयोजनों के लिए, हैं एक ही छवि दोहराया तीन बार: यह जानने के बाद, मैं आसानी से एक ढेर अनुपात में तीन छवि विचारों से मिलकर दृश्य आप अनुरोध की स्थापना करने में सक्षम था : 3x ऊंचाई पर, 6x ऊंचाई पर एक, और 1x ऊंचाई पर एक।
मैंने यह कैसे किया? मैंने स्टोरीबोर्ड में क्रमशः 300, 600 और 100 के तीन छवि दृश्य tag
मान दिए। (। बेशक मैं इस के लिए एक IBInspectable कस्टम गुण का इस्तेमाल किया हो तथा वास्तविक जीवन में, मैं ऐसा होता है) तो फिर मैं उन्हें अपने UIImageView उपवर्ग, MyImageView, जिसका कोड के सभी उदाहरणों बनाया इस तरह दिखता है:
class MyImageView: UIImageView {
override func intrinsicContentSize() -> CGSize {
print(self.tag)
return CGSizeMake(CGFloat(self.tag), CGFloat(self.tag))
}
}
स्टैक व्यू का वितरण आनुपातिक रूप से भरने के रूप में कॉन्फ़िगर किया गया है। छवि दृश्य उनके सामग्री मोड के साथ स्केल टू फिल के रूप में कॉन्फ़िगर किए गए हैं। परिणाम: स्टैक व्यू, अपने व्यवस्थित विचारों को बिछाने में, intrinsicContentSize
विधि का समर्थन करता है, और इस प्रकार सही काम करता है।
"UIStackView में वजन की अवधारणा नहीं है" असल में, हाँ यह करता है। लेकिन वजन व्यवस्थित दृश्य की अंतर्निहित गुणवत्ता है। – matt
क्या हम ['वितरण'] (https://developer.apple.com/documentation/uikit/uistackviewdistribution) स्टैकव्यू की संपत्ति [' fillProportionally'] (https://developer.apple.com/documentation/ पर सेट नहीं कर सकते) uikit/uistackviewdistribution/1616217-fillproportionally) –
यदि आप 'fillProportionally' का उपयोग करते हैं, तो आपको अपने इच्छित वजन में प्रत्येक दृश्य के 'आंतरिक सामग्री' को सेट करना होगा। चूंकि 'intrinsicContentSize' एक' रीडोनली 'प्रॉपर्टी है, जिसका अर्थ है' अंतर्निहित सामग्री 'को ओवरराइड करने के लिए' UIView' उप-वर्ग बनाना। यदि आप बाधाओं का उपयोग करते हैं, तो आपको उप-वर्ग बनाने की आवश्यकता नहीं है। –