साथी देवता, मुझे इंटरफ़ेस बिल्डर (Xcode 5 / iOS 7) में ऑटोलेयआउट से परेशानी हो रही है। यह बहुत बुनियादी और महत्वपूर्ण है इसलिए मुझे लगता है कि हर किसी को पता होना चाहिए कि यह कैसे ठीक से काम करता है। यदि यह Xcode में बग है, तो यह एक महत्वपूर्ण है!
इसलिए, जब भी मुझे कोई पदानुक्रम दिखाई देता है जैसे कि मैं मुसीबत में भागता हूं:
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
UIScrollView में ठोस अड़चनें हैं, जैसे, हर तरफ से 50 px (कोई समस्या नहीं)। फिर मैं यूबेलब (कोई समस्या नहीं) में एक शीर्ष स्थान की बाधा जोड़ता हूं (और मैं लेबल की ऊंचाई / चौड़ाई को पिन भी कर सकता हूं, कुछ भी नहीं बदल सकता है, लेकिन लेबल के आंतरिक आकार के कारण अनावश्यक होना चाहिए)
मुसीबत तब शुरू होती है, जब मैं यूबिल के लिए एक कठिन बाधा जोड़ता हूं:
जैसे, अनुगामी स्थान: सुपरविले बराबर: २५
अब दो चेतावनियाँ होती हैं - और मुझे समझ नहीं आता कि:
A) स्क्रॉल करने योग्य सामग्री का आकार अस्पष्टता (स्क्रॉल दृश्य में अस्पष्ट स्क्रॉल करने योग्य सामग्री ऊंचाई / चौड़ाई है)
बी) गलत दृश्य (लेबल अपेक्षित: x = -67 वास्तविक: x = 207
मैंने एक नए सिरे से नए प्रोजेक्ट में यह न्यूनतम उदाहरण दिया, जिसे आप डाउनलोड कर सकते हैं और मैंने एक स्क्रीनशॉट संलग्न किया है। जैसा कि आप देख सकते हैं, इंटरफ़ेस बिल्डर UIScrollView की सीमा के बाहर बैठने के लिए लेबल की उम्मीद करता है (नारंगी धराशायी आयत)। रिज़ॉल्व इश्यूज़ टूल के साथ लेबल के फ्रेम को अपडेट करना इसे वहीं स्थानांतरित करता है।
कृपया ध्यान दें: यदि आप UIScrollView को UIView से बदलते हैं, तो व्यवहार अपेक्षित है (लेबल का फ्रेम सही है और बाधा के अनुसार)। तो ऐसा लगता है कि या तो UIScrollView के साथ एक मुद्दा हो सकता है या मुझे कुछ महत्वपूर्ण याद आ रहा है।
जब मैं IB द्वारा सुझाए गए लेबल के फ्रेम को अपडेट किए बिना ऐप को चलाता हूं, तो यह ठीक है, ठीक उसी स्थान पर जहां यह होना चाहिए था और UIScrollView स्क्रॉल करने योग्य है। यदि मैं फ़्रेम को अपडेट करता हूं तो लेबल दृष्टि से बाहर है और UIScrollView स्क्रॉल नहीं करता है।
मेरी मदद करें ओबी-वान केनोबी! अस्पष्ट लेआउट क्यों? गलत दृष्टिकोण क्यों?
आप यहाँ नमूना परियोजना को डाउनलोड कर सकते हैं और कोशिश कर सकते हैं कि क्या पता चल सके: https://github.com/Wirsing84/AutoLayoutProblem
UIScrollView
सीधे उपयोग नहीं है। इसके बजाय UICollectionView
या UITableView
जितना संभव हो उपयोग करें , ज्यादातर हर चीज इन तत्व के साथ संभव है और इसकी सादगी, पठनीयता और पुन: प्रयोज्यता भी प्रदान करती है !!!