Xcode 6 स्टोरीबोर्ड गलत आकार?


139

Xcode 6 (बीटा 1) में स्विफ्ट से स्क्रैच से एक नया प्रोजेक्ट बनाया और स्टोरीबोर्ड के साथ कुछ अजीब व्यवहार और मेरे द्वारा देखे जाने वाले आउटपुट को देखा है।

मैंने एक साधारण इंटरफ़ेस बनाया है (जैसा कि नीचे दिखाया गया है) - व्यू कंट्रोलर के गुणों के साथ। जब मैं इसे सिम्युलेटर में चलाऊंगा तो मुझे उम्मीद होगी कि 'हैलो, वर्ल्ड' यूजर इंटरफेस में केंद्रीय होगा - हालांकि ऐसा लगता है कि यह 'स्क्वायर' केवल iPhone स्क्रीन में फिट हो रहा है और इस प्रकार गलत दृश्य दिखाया जा रहा है (नीचे देखें) )।

मेरा प्रश्न है: क्या किसी और ने इस व्यवहार को देखा है और उन्होंने इसे कैसे ठीक किया है?

धन्यवाद!

स्टोरीबोर्ड संपादक से देखें

गुण निरीक्षक

आकार निरीक्षक

सिम्युलेटर आउटपुट


ऑटो लेआउट बाधाओं को जोड़ें, जो इसे ठीक करना चाहिए। आप वर्तमान में सभी लेआउट के लिए डिज़ाइन कर रहे हैं, इसलिए ऑटो लेआउट आपको "सही" जगह में सामग्री प्रदर्शित करने में मदद करेंगे।
रज़

8
टिप्स: सहायक संपादक> स्वचालित> पूर्वावलोकन का उपयोग करते हुए, आप स्क्रीन का पूर्वावलोकन स्क्रीन के सभी आकारों के साथ देख पाएंगे
Francescu

जवाबों:


81

जबकि आसिफ बिलाल का जवाब एक सरल उपाय है जिसमें साइज़ क्लासेस शामिल नहीं हैं (जो कि iOS 8 में पेश किए गए थे) यह दृढ़ता से अनुशंसा की जाती है कि आप भविष्य के रूप में कक्षाओं को आकार देने के लिए उपयोग करें, और आप अंततः किसी भी तरह से कूदेंगे बिंदु।"


आपने शायद लेआउट की बाधाओं को नहीं जोड़ा है।

अपने लेबल का चयन करें, तल पर लेआउट की कमी बटन पर टैप करें:

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

उस मेनू पर उनके चेकबॉक्स की जाँच करके चौड़ाई और ऊँचाई (यह मेरी जैसी नहीं होनी चाहिए) और जोड़ बाधाएँ क्लिक करें। फिर अपने लेबल को अपने मुख्य दृश्य पर नियंत्रण-खींचें और फिर जब आप डी-क्लिक करते हैं, तो आपके पास कंटेनर में क्षैतिज और लंबवत रूप से केंद्र के विकल्प होने चाहिए। दोनों को जोड़ें, और आपको सेट किया जाना चाहिए।


1
उत्कृष्ट - इसने मेरे लिए बहुत काम किया - आपकी मदद के लिए धन्यवाद (टाइमर के उठाए जाने पर आपका उत्तर स्वीकार कर लिया जाएगा)
कैंडीफ्लॉस

1
आपका स्वागत है। यह ऑटोलेयूट के साथ डिफ़ॉल्ट व्यवहार है, जो अब डिफ़ॉल्ट रूप से सक्षम है। याद रखें, संभव विभिन्न स्क्रीन आकार / लेआउट के कारण, गणना करने का एक तरीका होना चाहिए जहां एक दृश्य को उसके माता-पिता के सापेक्ष तैनात किया जाएगा, और ऑटोलयूट इस मुद्दे को ठीक करता है। जब आप इन बाधाओं को नहीं जोड़ते हैं, तो दृश्य उन्हें स्वत: रनटाइम पर बनाता है, लेकिन ऊपरी-बाएँ कोने के सापेक्ष। यदि आपको इसके अलावा कुछ और चाहिए (आपको लगभग हमेशा कुछ और चाहिए), तो आपको बाधाओं को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता है।
कर सकते हैं Poyrazoğlu

4
नोट कंट्रोल-ड्रैगिंग (जो अजीब हो सकता है) आवश्यक नहीं है। इस छवि में चयनित एक के बाईं ओर बटन एक मेनू खोलता है जो आपको क्षैतिज और ऊर्ध्वाधर केंद्रों को पिन करने की अनुमति देता है।
जॉर्टन

आप सही कह रहे हैं .. मैं सिर्फ इसीलिए नियंत्रित करने के लिए उपयोग किया जाता हूं कि मैंने इसे इस तरह क्यों कहा है।
Can Poyrazoğlu

@ CanPoyrazoğlu - आप का उल्लेख "अपने लेबल का चयन करें।" क्या लेबल? मुझे एक नए iPhone प्रोजेक्ट के साथ एक ही मुद्दा मिला है जिसमें मेरे पास कोई लेबल या अन्य UI तत्व नहीं हैं। Xcode 6 में मेरा पहला प्रोजेक्ट, Objective C.
rattletrap99

253

समस्या को हल करने के लिए निम्न चरण करें

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


8
यह सही उत्तर है यदि आपको 600x600 व्यू कंट्रोलर मिल रहा है, जब आप एक मानक iPhone आकार व्यू कंट्रोलर चाहते थे।
फ्रैगल

5
यह सही उत्तर होना चाहिए (कम से कम उन लोगों के लिए जो गैर-सार्वभौमिक मंच पर काम करते हैं)
रैप्टर

36
मुझे नहीं पता कि लोगों ने इसे सही उत्तर के रूप में क्यों चिह्नित किया है ... पहला तरीका यह है कि इसे किया जाना चाहिए ... यदि आप लेआउट की तरह नहीं करते हैं तो आप उल्टी दिशा में जा रहे हैं ... Apple लीवरेज कर रहा है iPhone और iPads के सभी आकारों के लिए विकसित करने का एक अच्छा तरीका है और आप बस पुराने सामान पर वापस जाना चाहते हैं? क्योंकि आप खुद को अपडेट नहीं कर सकते? कभी मतदान नहीं किया, लेकिन ऐसा लगता है कि यह जवाब लोगों को भ्रमित करता है और फिर पुराने दृष्टिकोण का उपयोग करता है (जो कि पदावनत किया जाएगा) तो नए सामान का उपयोग करने के लिए प्रोत्साहित करने के बजाय ...
राफेल अयर्स

3
IPhone / iPad स्टोरीबोर्ड के लिए उपयोग किए जाने वाले हर व्यक्ति के लिए शीर्ष उत्तर
mamarx

3
लेआउट की कमी का उपयोग करें ... ऐप्पल इसी तरह से एंड्रॉइड काम करता है। दृश्य का कोई रूप नहीं है ... कभी-कभी यह एक दर्द हो सकता है, लेकिन यदि आप आकार को मजबूर करते हैं, तो आपका ऐप विभिन्न डिवाइस आकारों पर खराब दिखाई देगा। यदि आप नीचे दाएं कोने पर एक बटन दिखाना चाहते हैं, तो इसके लिए केवल 2 अवरोध बनाएं, और प्रतिबंध करें ... कोई X या Y चयन नहीं। सभी को इंजन द्वारा निर्धारित किया जाएगा। आंतरिक आकारों का उपयोग करें। अपनी कल्पना का प्रयोग। संबंधपरक बाधाओं का उपयोग करें। जानें यह एस ***।
राफेल एयरेस

18

यदि आप Xcode 6 का उपयोग कर रहे हैं और iOS 8 के लिए डिज़ाइन कर रहे हैं, तो इनमें से कोई भी समाधान सही नहीं है। अपने iPhone- केवल विचारों को सही तरीके से प्राप्त करने के लिए, आकार वर्गों को बंद न करें, अनुमानित मैट्रिक्स को बंद न करें, और बाधाओं (अभी तक) को सेट न करें। इसके बजाय, आकार वर्ग नियंत्रण का उपयोग करें, जो कि इंटरफ़ेस बिल्डर के तल पर पाठ बटन को याद करना आसान है जो शुरू में "wAny hAny" पढ़ता है।

बटन पर क्लिक करें, और कॉम्पैक्ट चौड़ाई, नियमित ऊंचाई चुनें। यह आपके विचारों का आकार बदलता है और सभी iPhone पोर्ट्रेट झुकाव को कवर करता है। यहां Apple के डॉक्स: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/SelectingASizeClass.html या "इंटरफ़ेस बिल्डर में एक आकार वर्ग का चयन" पर खोज करें


मुझे ऐसा लगता है कि पहले के iOS वर्जन पर साइज क्लासेस के साथ एप को नियुक्त करने के लिए मल्टीपल साइज क्लासेज के लिए डिजाइनिंग के बारे में यानी आपके लिंक में संपूर्ण साइज क्लासेज डिजाइन हेल्प के माध्यम से पढ़ना उपयोगी है ।
फ्रैंकलिन यू

यदि आप ऑटो लेआउट रखना चाहते हैं तो यह एक शानदार समाधान है, लेकिन स्टोरीबोर्ड दृश्य को एक वर्ग के बजाय परिदृश्य या चित्र के रूप में दिखाना चाहते हैं।
सौतेलेपन

5

स्टोरीबोर्ड में, अपने ViewController का चयन करें और एट्रीब्यूट इंस्पेक्टर के पास जाएं। बहुत ऊपर की ओर, सिमिटेड मेट्रिक्स के तहत आपके पास साइज़ और ओरिएंटेशन प्रॉपर्टीज़ हैं, जो इंफ़रेड पर सेट हैं। उन्हें वांछित मूल्यों में बदलें।

किसी अन्य स्क्रीन आकार पर ठीक से प्रदर्शित करने के लिए किसी एप्लिकेशन के लिए, आपको पहले पोस्ट में Can Poyrazoğlu द्वारा वर्णित के रूप में, बाधाओं को स्थापित करना होगा।


5

मेरे पास यह मुद्दा xcode 6 में था और रिसाइज़ संघर्षों को हल करने का एक तरीका है। यदि आप अपना दृष्टिकोण चुनते हैं, तो नीचे आपको एक आइकन दिखाई देगा, जो जैसा दिखता है | -Δ- | यदि आप उस पर क्लिक करते हैं, तो आप अलग-अलग उपकरणों के लिए आकार परिवर्तन करेंगे।


हां और जब आप त्रिकोण प्रतीक का चयन करते हैं, तो लापता बाधाओं और उछाल पर क्लिक करें, जो आपके द्वारा किए गए दृश्य डिवाइस आकार के अनुसार आकार देंगे यदि उसका सार्वभौमिक ऐप
vishal dharankar

3

अट्रैक्टिव इंस्पेक्टर (राइट टॉप कॉर्नर) पर जाएं सिम्युलेटेड मेट्रिक्स में, जिसका साइज, ओरिएंटेशन, स्टेटस बार, टॉप बार, बॉटम बार प्रॉपर्टीज हैं। SIZE के लिए, Inferred -> फ्रीफ़ॉर्म को बदलें।


+1 @Rachel इस उपयोगी छोटी टिप के लिए धन्यवाद सिमिटेड मेट्रिक्स के बारे में -> आकार: "फ़्रीफ़ॉर्म" (उर्फ, जाहिर है, "कस्टम व्यू द्वारा समर्थित पुन: प्रयोज्य xib के लिए एक कस्टम आकार सक्षम करें")।
cweekly

3

अपने स्टोरीबोर्ड पृष्ठ पर, फ़ाइल इंस्पेक्टर के पास जाएं और 'यूज़ साइज़ क्लासेस' को अनचेक करें। यह आपके विचार नियंत्रक को नियमित IPhone आकार से सिकोड़ना चाहिए जिससे आप परिचित थे। ध्यान दें कि 'आकार वर्ग' का उपयोग करने से आप कई उपकरणों पर अपनी परियोजना को डिज़ाइन कर सकते हैं। एक बार जब आप इसे अनचेक कर देते हैं तो Xcode आपको निम्न प्रकार से एक चेतावनी संवाद देगा। यह आत्म-व्याख्यात्मक होना चाहिए।

"आकार की कक्षाओं को अक्षम करना इस दस्तावेज़ को एकल डिवाइस परिवार के लिए डेटा संग्रहीत करने तक सीमित कर देगा। लक्षित डिवाइस का प्रतिनिधित्व करने वाले आकार वर्ग के लिए डेटा को बनाए रखा जाएगा, और अन्य सभी डेटा हटा दिए जाएंगे। इसके अलावा, सेगमेंट को उनके गैर में परिवर्तित कर दिया जाएगा। अनुकूली समकक्ष। "


3

XCode 7 का उपयोग करने वाले किसी भी व्यक्ति के लिए, एक विशिष्ट डिवाइस आकार (डिफ़ॉल्ट वर्ग-ईश कैनवास के बजाय) के लिए डिज़ाइन करना बहुत आसान है।

इंटरफ़ेस बिल्डर में, बाएं मेनू से अपना ViewController या दृश्य चुनें। फिर Show the Attributes Inspector, के तहत , जाने के लिए Simulated Metrics, और Sizeड्रॉपडाउन मेनू से वांछित चुनें।


यह केवल आपको उस डिवाइस के लिए अपने स्टोरीबोर्ड में डिज़ाइन करने देगा। जब आप अपना ऐप चलाते हैं, तो इसका डिज़ाइन अलग-अलग स्क्रीन आकारों के लिए अलग-अलग हो सकता है।
जॉय तवाड्रस

@JoeyTawadrous बिल्कुल लेकिन यह पूछे गए सवाल का जवाब देता है :)
प्रीस्ट

2

आप संभवतः सुझाए गए अवरोधों (Xcode 6.0.1) को जोड़ने / रीसेट करने के लिए "स्टोरीबोर्ड दृश्य में नीचे दाईं ओर त्रिभुज आइकन" हल करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.