तो आप इस राशि:
और समस्या यह है , जब आप पहली बार भीतरी ढेर पतन, आप ऑटो लेआउट त्रुटियों मिलती है:,
2017-07-02 15:40:02.377297-0500 nestedStackViews[17331:1727436] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x62800008ce90 'UISV-canvas-connection' UIStackView:0x7fa57a70fce0.top == UILabel:0x7fa57a70ffb0'Top Label of Inner Stack'.top (active)>",
"<NSLayoutConstraint:0x62800008cf30 'UISV-canvas-connection' V:[UILabel:0x7fa57d30def0'Bottom Label of Inner Sta...']-(0)-| (active, names: '|':UIStackView:0x7fa57a70fce0)>",
"<NSLayoutConstraint:0x62000008bc70 'UISV-hiding' UIStackView:0x7fa57a70fce0.height == 0 (active)>",
"<NSLayoutConstraint:0x62800008cf80 'UISV-spacing' V:[UILabel:0x7fa57a70ffb0'Top Label of Inner Stack']-(8)-[UILabel:0x7fa57d30def0'Bottom Label of Inner Sta...'] (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x62800008cf80 'UISV-spacing' V:[UILabel:0x7fa57a70ffb0'Top Label of Inner Stack']-(8)-[UILabel:0x7fa57d30def0'Bottom Label of Inner Sta...'] (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
समस्या के रूप में आप ने कहा कि बाहरी स्टेक दृश्य एक heig लागू होता है आंतरिक स्टैक दृश्य में एचटी = 0 बाधा। यह अपने स्वयं के सबव्यू के बीच आंतरिक स्टैक व्यू द्वारा लागू 8 बिंदु पैडिंग बाधा के साथ संघर्ष करता है। दोनों बाधाओं को एक साथ संतुष्ट नहीं किया जा सकता है।
बाहरी स्टैक व्यू इस ऊंचाई = 0 बाधा का उपयोग करता है, मेरा मानना है, क्योंकि यह बेहतर दिखता है जब आंतरिक दृश्य को पहले बिना छेड़छाड़ किए छुपाया जा सकता है।
इसके लिए एक आसान फिक्स है: एक सादे UIView
में आंतरिक स्टैक व्यू को लपेटें, और उस रैपर को छुपाएं। मैं दिखाऊंगा।
यहाँ ऊपर टूटा संस्करण के लिए दृश्य रूपरेखा है:
समस्या को ठीक करने के लिए, आंतरिक स्टैक दृश्य का चयन करें।
इंटरफ़ेस बिल्डर आवरण दृश्य पर एक चौड़ाई बाधा बनाया जब मैं इस किया था, ताकि चौड़ाई बाधा को हटा दें:: मेनू बार से, Editor> एम्बेड में> देखें चुनें
:
इसके बाद, आवरण के सभी चार किनारों और भीतरी स्टेक दृश्य के बीच बाधाओं बनाने
इस बिंदु पर, लेआउट वास्तव में रनटाइम पर सही है, लेकिन इंटरफ़ेस बिल्डर इसे गलत तरीके से खींचता है। आप आंतरिक ढेर के बच्चों की ऊर्ध्वाधर hugging प्राथमिकताओं को सेट करके इसे ठीक कर सकते हैं। मैं उन्हें 800 करने के लिए सेट:
हम नहीं वास्तव में इस बिंदु पर unsatisfiable विवश समस्या तय कर दी है। ऐसा करने के लिए, नीचे बनाई गई निचली बाधा पाएं और इसकी प्राथमिकता आवश्यक से कम निर्धारित करें। इसे 800 करने के लिए बदल डालते हैं:
अंत में, आप शायद एक आउटलेट आपके विचार आंतरिक स्टैक दृश्य से जुड़े नियंत्रक में, था, क्योंकि आप अपने hidden
संपत्ति बदलते रहे थे। आंतरिक स्टैक व्यू के बजाय रैपर दृश्य से कनेक्ट करने के लिए उस आउटलेट को बदलें। यदि आपका आउटलेट का प्रकार UIStackView
है, तो आपको इसे UIView
पर बदलना होगा।मेरा प्रकार UIView
की पहले से ही था, इसलिए मैं सिर्फ स्टोरीबोर्ड में यह पुन: कनेक्ट:
अब, जब आप आवरण देखने के hidden
संपत्ति टॉगल, स्टेक दृश्य कोई unsatisfiable बाधा चेतावनी के साथ संक्षिप्त करने के लिए, दिखाई देगा। यह वस्तुतः समान दिखता है, इसलिए मैं ऐप चलाने के एक और जीआईएफ पोस्ट करने से परेशान नहीं होगा।
आप मेरी परीक्षा परियोजना in this github repository पा सकते हैं।
धन्यवाद, मैं आज कोशिश करूँगा और अगर यह काम करता है तो जवाब स्वीकार करें :) –