2015-09-29 10 views
8

साथ इसकी सामग्री के आकार के एक XIB की जड़ दृश्य आकार परिवर्तन मैं Xcode में एक XIB बना सकते हैं और एक subview के रूप में एक साधारण दृश्य जोड़ें:गतिशील रूप autolayout

XIB with rootview and subview

क्या मैं हासिल करना चाहते हैं कि subview है एक निश्चित आकार की है और rootview स्वचालित रूप से, कि subview के आकार के आकार बदलता है उसके चारों ओर 20.0 के अंतर छोड़ने:

Resized XIB

तो मैं subvi को एक निश्चित चौड़ाई और एक निश्चित ऊंचाई बाधा जोड़ने ew। superview किसी भी कमी नहीं है के रूप में

Constraints View showing constraints

न अस्पष्टता है और न ही परस्पर विरोधी की कमी नहीं होनी चाहिए: तब मैं 20.0 मार्जिन के लिए चार बाधाओं को जोड़ने मैं करने के लिए नीचे हटना superview उम्मीद करेंगे बाधाओं से मेल खाते हैं। हालांकि, Xcode शिकायत:

Warnings

इन बाधाओं, केवल विरोधी यदि rootview एक निश्चित आकार था और उस मामले प्रतीत होता होगा। तो मेरा सवाल है: मैं एक एक्सआईबी लचीला का रूटव्यू कैसे बना सकता हूं ताकि यह गतिशील रूप से अपनी सामग्री को मेल करने के लिए अपने आकार को समायोजित कर सके?

(इंटरफ़ेस बिल्डर के साथ यह है कि संभव है?)

+0

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

उत्तर

4

कैसे मैं एक XIB की rootview लचीला कर सकते हैं ताकि यह गतिशील इसके आकार को समायोजित कर इसकी सामग्री मैच के लिए?

इंटरफ़ेस निर्माता संभव नहीं है।

superview किसी भी कमी नहीं है के रूप में वहाँ न अस्पष्टता है और न ही परस्पर विरोधी की कमी

इसकी न सिर्फ एक सुपर दृश्य होना चाहिए। यह भी निब में एक objet है। हम ऐसे विचारों के लिए नकली आकार को परिभाषित करते हैं। इसका उपयोग त्रुटियों को चुप करने के लिए किया जा सकता है। लेकिन फिर ये सिर्फ नकल कर रहे हैं।

क्या यह रूट दृश्य नियंत्रक देखें? यदि हां, मुझे समझ में नहीं आ रहा है कि आप इसे वापस 280 और ऊंचाई 168 तक ठीक करने का प्रयास क्यों कर रहे हैं।

यदि यह दृश्य एक कस्टम दृश्य है जिसे आप किसी अन्य 'पैरेंट' व्यू में जोड़ना चाहते हैं। फिर आपको 280 और ऊंचाई 168 के साथ अनुकरण आकार बदलना चाहिए, और इसे सबव्यूव के रूप में जोड़ते समय आपको 'मूल' दृश्य में इस रूटव्यू को स्थिति में रखने के लिए दो और बाधाओं को जोड़ना होगा।

+0

बात यह है कि: रूट व्यू को टेबल व्यू सेल माना जाता है और यदि मैं इसे ऑटोलायआउट के साथ उपयोग करना चाहता हूं तो मुझे रूट दृश्य को पहली बार बाधाओं को अनुकूलित करने की आवश्यकता है ताकि मैं फ्रेम की ऊंचाई को ' tableView: heightForRowAtIndexPath: 'विधि। – Mischa

+2

आपके उत्तर के लिए धन्यवाद! मुझे सच में आश्चर्य है कि यह क्यों संभव नहीं है ... – Mischa

+0

यदि आप इस माध्यम से सेल ऊंचाई प्राप्त करने की कोशिश कर रहे हैं। आप गलत दिशा में हैं। – BangOperator

0

मुझे लगता है कि आप पूरे कंटेनर के लिए स्वत: आकार बदलने मुखौटा सेट करने के लिए भूल गया

self.yourViewController!.view.translatesAutoresizingMaskIntoConstraints = false 
+0

नहीं, क्योंकि: 1) मेरे प्रश्न में मैं 'UIView' का जिक्र कर रहा था, न कि 'UIViewController'। 2) इस कोड का केवल रनटाइम पर असर होगा, इंटरफ़ेस बिल्डर में नहीं, क्योंकि IB_DESIGNABLE व्यू ** नियंत्रक ** जैसी कोई चीज़ नहीं है। 3) जैसा कि @ बांगऑपरेटर ने अपने उत्तर में बताया है इंटरफ़ेस बिल्डर * हमेशा * किसी भी आईबी फ़ाइल के मूल दृश्य के लिए एक निश्चित फ्रेम का उपयोग करता है, यह एक एक्सआईबी या स्टोरीबोर्ड हो सकता है। – Mischa

0

आप xib संपादन मैन्युअल रूप से ऊंचाई बाधा सेट करने के लिए उदाहरण के लिए ऐसा कर सकते हैं (मेरे मामले में यह करने के लिए एक असमानता था न्यूनतम ऊंचाई सेट):

  1. ऊंचाई
  2. एक पाठ फ़ाइल
  3. रूप xib खोलने के लिए एक subview के लिए एक बाधा जोड़ने बाधा लगता है आप एक dded
  4. कटौती और यह रूट दृश्य के बाधा अनुभाग
  5. ओपन इंटरफ़ेस बिल्डर में xib फिर
  6. बाधा आती है और आप इसे संपादित कर सकते में पेस्ट (ऊंचाई के मूल्य के Cmd-f'ing द्वारा जैसे) सामान्य की तरह
संबंधित मुद्दे