Xcode 8 में अपडेट होने के बाद लेआउट समस्याएँ


102

Xcode 8 में अपग्रेड होने के बाद मेरी एक स्क्रीन के पहले और बाद में यहाँ है।
मैंने जो भी किया, वह मेरा main.storyboard खुला था और वहीं से मैंने अपने ऐप को अपने फोन पर बनाया और चलाया।
मेरे संस्करण नियंत्रण में, मैं देख सकता हूं कि Xcode मेरे मुख्य.स्टोरीबोर्ड में बहुत सारे बदलाव कर रहा है, बस मुझे इसे खोलने से।
जब भी मैं उन परिवर्तनों को हटाता हूं, तो मैं देख सकता हूं कि मैं Xcode 7.3.1 में देखने के लिए क्या उपयोग करता हूं।
लेकिन, जैसे ही मैं अपने स्टोरीबोर्ड के साथ इंटरफेस बिल्डर को फिर से खोलता हूं, मुझे लगता है कि वे बदलाव वापस आ गए हैं।

क्या मैं यहां कुछ कर सकता हूं?

Xcode 8 से पहले

यहां छवि विवरण दर्ज करें

Xcode 8 को अपडेट करने के बाद

यहां छवि विवरण दर्ज करें


XCode 8 को फिर से एक नए स्रोत से खोलने की कोशिश करें (यह पहले किए गए किसी भी परिवर्तन को रोकें)। अब, जब आप स्टोरीबोर्ड खोलते हैं, तो अपने सभी यूआई आइटम को हाइलाइट करें और "अपडेट फ्रेम्स" पर क्लिक करें। इससे आपकी समस्या ठीक हो सकती है।
d1str0

6
क्या आप bugreport.apple.com पर बग दर्ज कर सकते हैं और स्टोरीबोर्ड संलग्न कर सकते हैं जिसके लिए यह हो रहा है? हम इसका और विश्लेषण करना चाहेंगे।
क्विन टेलर

1
मेरी भी यही समस्या है। Xcode8 में मेरा स्टोरीबोर्ड खोलने और "एक प्रारंभिक डिवाइस दृश्य चुनें" डायलॉग को स्वीकार करने के बाद, प्रत्येक अजीब कार्य कर रहा है। जब मैं सभी फ़्रेमों को अपडेट करता हूं, तो आईबी अच्छा दिखता है, लेकिन निर्माण के बाद, ऐप पूरी तरह से टूट गया है। 4 ऐप के साथ इसका परीक्षण किया।
चेरीपिग

@QuinnTaylor मुझे एक समान समस्या हो रही है, Xcode 8 के बाद मेरे स्टोरीबोर्ड को UIImageViews को UITableViews में कनवर्ट करने पर कोई भी सामग्री दिखाई नहीं देती है, हालांकि उनकी रूपरेखा दिखाई देती है Debug View Hierarchy। UICollectionViews में समान वर्ग के अन्य ऑब्जेक्ट प्रभावित नहीं होते हैं।
मैनुअल

XIB या स्टोरीबोर्ड पुराने संस्करण 7.x और सहेजें और बंद के रूप में डिफ़ॉल्ट सेट करता है। अस्थायी समाधान, लेकिन काम करता है। एक बार सेव और क्लोज करने के बाद दोबारा न खोलें। अन्यथा फिर से शुरू से ही समान चरणों का पालन करने की आवश्यकता है।
भावेश कुंभानी

जवाबों:


111

एक बार जब मैं स्टोरीबोर्ड फ़ाइल को Xcode8 के संगत होने के लिए परिवर्तित करता हूं, तो मुझे टेबलव्यू छवियों के साथ ऐसी ही समस्या नहीं थी। यह Xcode8 के साथ एक बग जैसा दिखता है, इसलिए बग फिक्स जारी होने तक, यहाँ एक काम है:

  1. Xcode 8 में अपना स्टोरीबोर्ड खोलें और एक प्रारंभिक उपकरण दृश्य चुनें। जैसा कि आप सामान्य रूप से परिवर्तन करेंगे।
  2. एक बार जब आप अपना बदलाव पूरा कर लेते हैं, तो स्टोरीबोर्ड का चयन करें -> फ़ाइल इंस्पेक्टर -> में खुलता है -> 'Xcode 7.x' चुनें।

यहां छवि विवरण दर्ज करें

  1. संकेत दिए जाने पर 'सहेजें और बंद करें' चुनें
  2. आपका स्टोरीबोर्ड परिवर्तन सहेज लिया जाएगा, और आपका स्टोरीबोर्ड कार्य करेगा जैसा कि उसने पूर्व-Xcode8 किया था।

जब आपको स्टोरीबोर्ड फ़ाइल में अन्य परिवर्तन करने की आवश्यकता होती है, तो इन चरणों का फिर से पालन करें।


इसके लिए वाह +1 सुनिश्चित करें। मैंने अपने टुडेएक्स्टेंशन के भीतर iOS 10 में इससे संघर्ष किया। यह तब तक नहीं था जब तक मैं चीजों को संकुचित नहीं करता, गिट भिन्न का विश्लेषण करता है, कि मैंने संदिग्ध स्टोरीबोर्ड xml संपादन Xcode 8 से जोड़ा जा रहा है। Xcode 7 के लिए स्टोरीबोर्ड दस्तावेज़ को सहेजने के बाद (मेरे संपादन करने के बाद), मैं अब निर्माण और जहाज का उपयोग कर सकता हूं IOS 10 के लिए Xcode 8। धन्यवाद।
जॉन एर्क

यह यकीन है कि एक बग दिखता है। Xcode 7.x में Opens के रूप में सेव करना मेरे लिए एक अस्थायी वर्कअराउंड के रूप में काम करता है।
स्टीव ए

मैंने पिछले 3 दिनों को Xcode8 में जगह-जगह से टूटे हुए सभी लेआउट को ठीक करने पर खर्च किया जब तक मुझे यह पोस्ट नहीं मिला। मैं शायद आप जैसे लोगों को Apple से ज्यादा लोगों पर भरोसा करना चाहिए। विश्वास नहीं कर सकता कि यह मेरा बहुत समय बर्बाद किया है। इसके लिए बहुत बहुत धन्यवाद डेविड!
जू यिन

@XuYin क्या हमें हर स्टोरीबोर्ड के लिए ऐसा करना चाहिए? मेरा मतलब है कि अगर मेरे प्रोजेक्ट में एक और स्टोरीबोर्ड है Xib फ़ाइलों के बारे में क्या? क्या मुझे यह उन लोगों के लिए भी करना चाहिए?
हनी

@ मैं स्टोरीबोर्ड पर ऐसा नहीं करता था, लेकिन मैंने हर xib फ़ाइल पर किया था, जिसके साथ मेरा कोई मुद्दा है। लेकिन मुझे लगता है कि आप इसे स्टोरीबोर्ड पर आज़माना चाहते हैं, अगर आपको अजीब लेआउट समस्या दिखाई देती है। चूंकि यह फिक्स केवल 5 सेकंड की तरह होगा। और एप्लिकेशन को फिर से बनाने के बाद, आपको बहुत जल्दी ठीक देखने में सक्षम होना चाहिए।
जू यिन

14

XIB या स्टोरीबोर्ड पुराने संस्करण 7.x और सहेजें और बंद के रूप में डिफ़ॉल्ट सेट करता है। अस्थायी समाधान, लेकिन काम करता है। एक बार सेव और क्लोज करने के बाद दोबारा न खोलें। अन्यथा फिर से शुरू से ही समान चरणों का पालन करने की आवश्यकता है।यहां छवि विवरण दर्ज करें


6
यह मदद नहीं करता है क्योंकि मुझे फ़ाइल पर काम करने की आवश्यकता है। यह सब करता है फ़ाइल को पीछे की संगतता के लिए सहेजें। यह
XIB

मैं यह कर रहा हूँ, लेकिन फिर से जब मैं ड्रॉपडाउन में xib फाइल चुन रहा हूँ तो यह केवल xcode 8.0 दिखा रहा है ...
jayant rawat

8

एह समस्या वही। मैं आंशिक रूप से इसे निम्नलिखित तरीके से ठीक करने में कामयाब रहा ( Xcode संस्करण 8.1 (8B62) के लिए )

स्टोरीबोर्ड की दस्तावेज़ रूपरेखा में, मैंने प्रत्येक दृश्य पर क्लिक किया जिसमें पीले रंग का तीर था जो कुछ लेआउट मुद्दों (स्क्रीनशॉट पर नंबर 1) का संकेत दे रहा था।

इसके बाद, प्रत्येक समस्याग्रस्त दृश्य के लिए, मुझे "अपडेट फ्रेम्स" छोटे आइकन (स्क्रीनशॉट पर नंबर 2) पर क्लिक करना था, जिसने प्रति दृश्य सभी लेआउट मुद्दे तय किए।

यहां छवि विवरण दर्ज करें

हालाँकि मेरे मामले में एक दृश्य Xcode7 से Xcode8 में संक्रमण के बाद भी रोने की स्थिति में था। मुझे इसे मैन्युअल रूप से बाधाओं को समायोजित करने या लापता बाधाओं को जोड़कर ठीक करना था।

काठ, XCode8 और स्टोरीबोर्ड का अच्छा आश्चर्य नहीं। यदि आपने AppCode संपादक का उपयोग किया है, तो आपको ऐसी समस्या नहीं होगी, क्योंकि यह स्टोरीबोर्ड का समर्थन नहीं करता है; पी

सौभाग्य!



6

कृपया किसी भी संभावित समाधान के लिए थ्रेड्स का पालन करें: (मेरा मानना ​​है कि यह कई डेवलपर्स के लिए होता है)।
Xcode 8 GM बीज स्टोरीबोर्ड मुद्दा
Xcode 8 - पिछले स्टोरीबोर्ड विकृत हो रहे हैं

(मैंने किसी भीHW चौड़ाई 600 का उपयोग किया) जब Xcode 8 में अपडेट किया गया तो इसने मेरे सभी ViewControllers का आकार बदल दिया। परिणामस्वरूप सभी लेआउट विकृत हो गया था।
वर्तमान में मैं इस मुद्दे के लिए केवल 3 समाधान देखता हूं (मैं जल्द ही इंतजार करने पर भरोसा नहीं करूंगा)।

प्रत्येक Viewcontroller के लिए 1.Go और इसे से ठीक करें Update Frames

2. मुख्य ViewController Size Inspector -> Freeform -> 600के लिए सबसे नियंत्रकों के रूप में अनुमान लगा रहे हैं यह उन सभी के लिए आकार बदल जाएगा (नई सुविधाओं के प्रभाव पर सावधान रहना Apple मैं शुरू करना चाहता हूँ)।

3. स्टोरीबोर्ड के लिए git में बदलावों को छोड़ें (मैं इसका सुझाव नहीं दूंगा क्योंकि Apple ने कुछ अपडेट भी डाले थे जो Xcode के लिए महत्वपूर्ण हो सकते हैं)।

Xcode 8 (WWDC16) में नए AutoLayout फीचर के लिए अतिरिक्त लिंक: मेकिंग ऐप्स अडेप्टिव, पार्ट 1


1
विकल्प 1 सबसे समझदार है और इसने मेरे लिए काम किया। माइक के रूप में। नोट, ट्रैक नीचे और अधिक परेशानी के रूप में फिक्सिंग चीजों में 'चाल' XCode की कोशिश करने से सावधान रहना अपरिहार्य है।
आर्कडी बॉब arc

मैंने विकल्प 1 का उपयोग किया (मुझे लगता है कि यह अधिक सुरक्षित है)। लेकिन इसका समय लगता है।
माइक .12

5

मेरे मामले में अखिल कटेजा द्वारा सुझाए गए समाधान काम करते हैं और मुझे भी मुख्य दृश्य की चौड़ाई और ऊंचाई को रीसेट करने की आवश्यकता है:

1) आकार को नि: शुल्क फ़ॉर्म पर सेट करें

यहां छवि विवरण दर्ज करें

2) मूल आकार में चौड़ाई और ऊंचाई को रीसेट करें:

यहां छवि विवरण दर्ज करें

अंत में बचाओ और तुम हो गए।


4

मेरे लिए समाधान केवल UIViewController के मुद्दों पर और फिर क्लिक करने के लिए था Editor > Resolve Auto Layout Issues > All Views In ... > Updates Frames

इसने नए चयनित डिफ़ॉल्ट दृश्य (मेरे मामले में iPhone 7) के आधार पर मौजूदा बाधाओं को फिट करने के लिए विचारों को फिर से व्यवस्थित किया।

यह भी ध्यान दें: यदि आपको एक नेविगेशन बार मिसप्लास्ड व्यू चेतावनी मिलती है , जैसे कि मैंने किया, तो बस UINavigationController / UIViewController का चयन करें और फिर Attributes Inspector > Bar Visibility > Shows Navigation Barइसे बंद करें और फिर से चालू करें।


3

Inferred से मुक्त करने के लिए देखें आकार की स्थापना मेरे लिए काम किया। यह अटेंडेस इंस्पेक्टर में हेडिंग सिमिटेड मेट्रिक्स के तहत पाया जा सकता है ।


3

मेरे पास एक ही समस्या थी और मैंने इसे कंट्रोलर के दृष्टिकोण की बाधाओं को अपडेट करके हल किया है। अपने viewDidLoad () फ़ंक्शन में निम्न कोड डालें

self.view.layoutIfNeeded()

1
चीयर्स बिल! मेरे लिए 'लेआउटअफनीड' ने काम किया! (सब कुछ घंटों के लिए कोशिश करने के बाद ..)
एथन हैल्पिन

3

मैंने प्रत्येक नियंत्रक का चयन किया और "अपडेट फ्रेम्स" पर क्लिक किया और इसने लेआउट तय किया।


3

@ David-truong ( https://stackoverflow.com/a/39589860/1407528 ) का उत्तर मेरे मामले में काम नहीं कर रहा है, इसलिए यदि आप मेरी उसी स्थिति में हैं, तो यह प्रयास करें:

  • पिछला Xcode 7.3.1 यहाँ से डाउनलोड करें: https://developer.apple.com/download/more/
  • अपने सभी परिवर्तनों को पूर्ववत करें (यदि आपके पास git जैसा कोड प्रबंधक है। यदि आप नहीं करते हैं, तो आपको ' https://githowto.com/ ') चाहिए
  • Xcode 7.3.1 के साथ प्रोजेक्ट खोलें।

यदि आपके पास आपके सभी उपकरण iOS 10+ में अपडेट किए गए हैं, तो Xcode का यह संस्करण उन उपकरणों को संगत डिवाइस के रूप में मान्यता नहीं देगा। तो, इस चाल के साथ प्रयास करें:

  • यहां जाएं: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • IOS 10 या 10.1 से संबंधित फ़ोल्डर्स को कॉपी करें: / एप्लीकेशन / Xcode 7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • Xcode 7.3.1 के साथ प्रोजेक्ट खोलें (यदि आपके पास पहले से खुला है तो Xcode को पुनरारंभ करें)
  • अपने कनेक्ट किए गए iOS 10+ डिवाइस का चयन करें
  • पुश रन

नोट: स्विफ्ट जैसी नई सुविधाएँ इस ट्रिक का उपयोग करके उपलब्ध नहीं होंगी, लेकिन आपको अपनी परियोजना को लोड करने और बनाने में सक्षम होना चाहिए।


3

उम्मीद है कि यह मदद करेगा

जब मैंने Xcode को 7.3 से Xcode 8 तक अपडेट किया और ऐप को चलाया, तो कुछ दृश्य पूरी तरह से प्रदर्शित होते हैं, लेकिन कुछ विकृत होते हैं। फिर, मैंने nib फ़ाइल की जाँच की और इसने मुझे विशेष डिवाइस आकार चुनने और फिर उसके अनुसार nib दिखाने के लिए प्रेरित किया। डिवाइस का आकार जो ऑफकोर्स है नहीं Any-Any(Xcode 7.3)। इसलिए सभी निब फ़ाइल सही तरीके से प्रदर्शित नहीं हो रही हैं।

सॉल्यूशन वर्क फॉर्म मुझे: - पीले तीर को दबाएं जैसे नीचे इमेज में दिखाया गया है

यहां छवि विवरण दर्ज करें

यह एक पॉप अप को प्रांप्ट करेगा जो विकल्प को दिखाता है

यहां छवि विवरण दर्ज करें

check.it के Update Framesसाथ चुनें। Apply to all views in containerयह लगभग 90% विकृत यूआई को हल कर देगा और बाकी ऑटो-लेआउट बाधाओं की समस्या को मैन्युअल रूप से हल किया जा सकता है।


इससे लेआउट भी खराब हो सकते हैं। IMHO यह बहुत ध्यान से किया जाना है, एक बार में एक दृश्य और जाँच अगर चीजें जारी रखने से पहले काम किया।
ब्रेनरैड करें

हां, ऑफ-कोर्स आपको इसके लिए कुछ समय का उपभोग करने की आवश्यकता है और यह समाधान आपको लंबे समय तक चलाने में मदद कर सकता है जब आप कुछ यूआर यूआई अपडेट करना चाहते हैं।
अनुराग भाकुनी

1

मैंने Xcode संस्करण 7.3.1 का उपयोग करके समस्या को ठीक किया है। आप Apple डेवलपर पोर्टल से .dmg फ़ाइल डाउनलोड कर सकते हैं। मैंने हर ऐप में ऑटोराइज़िंग का इस्तेमाल किया और यह मेरे लिए बहुत अच्छा काम करता है। मैं Xcode 8 को केवल तभी अपडेट करूंगा जब वे इस बग को ठीक कर सकते हैं।

इसे यहाँ डाउनलोड करें: https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1 वियतनाम


यदि आप iOS 10 का समर्थन करना चाहते हैं तो यह समाधान बेकार है
jungledev

1

इसी तरह की समस्या को ठीक करने के लिए, मैंने xib को फ़्रीफ़ॉर्म (इंफ़र्ड नहीं) के रूप में कॉन्फ़िगर किया और xib फ़ाइल को Xcode 7.x संगत के रूप में सहेजा। मेरे मामले में दोनों कदमों की आवश्यकता थी। मुझे आशा है कि वह मदद करेंगे!


1

मैं Xcode 8.2 में एक नया बटन देखता हूं, (छवि में नारंगी सर्कल की जांच करें)। यह आपको कुछ मदद देगा।

चरण: 1. स्टोरीबोर्ड खोलें और अपनी इच्छानुसार किसी भी डिवाइस का चयन करें। बस व्यू कंट्रोलर का चयन करें 3. उल्लेखित बटन पर क्लिक करें (छवि के अनुसार) 4. यह उस व्यू कंट्रोलर के लिए फ्रेम को अपडेट करेगा और आप इसके साथ आगे बढ़ सकते हैं

मुझे इससे बेहतर कोई उपाय नहीं मिला। अगर एक मिल जाए तो कृपया जवाब दें।

आईबी स्क्रीनशॉट


कुछ नहीं हुआ।
मुजू

0

अद्यतन बाधाओं और दृश्य पूर्वावलोकन में लेआउट साक्षात्कार समस्या हल करती है

- (void) viewDidLoad {
        [self.view updateConstraints];
        [self.view layoutSubviews];
        [super viewDidLoad];
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.