IB में UIView का आकार नहीं बदल सकता


88

शायद कुछ सरल है, लेकिन मैं यह नहीं समझ सकता कि मैं इंटरफ़ेस बिल्डर में एक xib में UIView का आकार क्यों नहीं बदल सकता।

मैंने Xcode में एक नया दृश्य XIB बनाया और आकार निरीक्षक में, चौड़ाई और ऊंचाई को निष्क्रिय कर दिया और 320 से 460 तक धूसर कर दिया। यह अजीब है क्योंकि मैं अन्य दो विचारों के लिए आकार बदल सकता हूं (अन्य दो टैब बार के साथ जुड़ा हुआ है) आइटम)।

मुझे यकीन नहीं है कि इसका कोई लेना देना है लेकिन मैंने हाल ही में sdk को 3 में अपडेट किया है।

धन्यवाद!

जवाबों:


81

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


1
धन्यवाद यह सही है। मैंने xcode और IB को अपग्रेड करने के बाद डिफ़ॉल्ट रूप से स्टेटस बार चालू किया था। दूसरों को यह बंद है।

1
जैसा कि Xcode 4.2, iOS 5.0.1 में बदल गया है। नीचे मेरा जवाब बताता है कि यह कैसे प्राप्त किया जा सकता है।
lol

1
बहुत मददगार। बस स्थिति बार बंद करें, आकार समायोजित करें और फिर स्थिति पट्टी को फिर से चालू करें।
वूलन

9
इस सेटिंग ने Xcode 4.3.3 में एक ViewController.xib के लिए काम किया: "सिमिटेड मेट्रिक्स - साइज: फ्रीफॉर्म"। उसके बाद, दृश्य आकार सेटिंग सक्षम है। विकल्प भरने के लिए "व्यू मोड" स्केल को भी हटा दें (नकली मेट्रिक्स के ठीक नीचे)।
defvol

uuuugh मैं वास्तव में इस आईडीई नापसंद
Saik कास्के

80

XCode 4.6.3 / 5.0.2 में यह हासिल करने के लिए आपको नीचे दिए गए स्क्रीनशॉट का पालन करना होगा:

  1. 'फाइल इंस्पेक्टर' के तहत -> अनटिक Use Auto Layout
  2. विशेषताएँ चयनकर्ता पर क्लिक करें और Freeformआकार चुनें

यह एक तालिका दृश्य के लिए शीर्ष लेख दृश्य बनाते समय आवश्यक है

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


40

आप जिस भाग की तलाश कर रहे हैं, वह पहले इंस्पेक्टर पैनल (कमांड -1) पर है। शीर्ष पर एक अनुभाग है जिसे लेबल किया गया है यूजर इंटरफेस तत्व। डिफ़ॉल्ट रूप से स्थिति पट्टी चालू है। आपको यह सुनिश्चित करने की आवश्यकता है कि सभी तीन किसी भी पर सेट नहीं हैं।


2
धन्यवाद, इन जवाबों ने मुझे सिर्फ एक टन बचा लिया! किसी को पता है कि आईबी ऐसा क्यों करता है?
ग्रेगोर

धन्यवाद दोस्त। मैं उस एक की तलाश में था।
नटणवरा

सभी पर ध्यान दें, यह अब है: कोई नहीं के बजाय "अनिर्दिष्ट"। (मेरे पास संस्करण 3.2.3 है)
IcyBlueRose

मैं पुष्टि करता हूं कि iPad "अनिर्दिष्ट" है, धन्यवाद थॉमस सोम, आपने मुझे कुछ घंटे बचाए: D
Qlimax

मैं इसे केवल View Controllers के लिए देखता हूं, न कि विचारों
BigBoy1337

26

Xcode 4.2, iOS 5.0.1 के अनुसार, डिफॉल्ट सिम्युलेटेड मेट्रिक्स में UIViewControllers की 'size' विशेषता को 'Inferred' शामिल करना शामिल है।

यदि आप इस विशेषता को 'फ़्रीफॉर्म' में बदलते हैं तो आप UIViewController के भीतर मौजूद UIView का आकार बदलने में सक्षम हैं, जबकि स्टेटस बार (या उस मामले के लिए किसी अन्य सिमुलेशन) का अनुकरण भी कर सकते हैं


1
आकार की विशेषता अब "रेटिना 4 पूर्ण स्क्रीन" को डिफॉल्ट करती है, लेकिन इसे "फ्रीफॉर्म" में बदलना अभी भी काम करता है।
पियर-ल्यूक गेंड्रेउ

4

बस इंस्पेक्टर के पास जाएं, पहले पैनल पर जाएं (या कमांड -1 दबाएं) और फिर "सिमिलेटेड यूजर इंटरफेस एलिमेंट्स" नामक सेक्शन के तहत फ़ील्ड्स को स्टेटस बार, टॉप बार और बॉटम बार से किसी में भी न बदलें। आपको उन्हें दिखाई देने के लिए छोटे त्रिकोण पर क्लिक करने की आवश्यकता हो सकती है।


1

अजीब बात है कि मैं एक ऐसी ही समस्या है। मैंने xib फ़ाइल से सभी दृश्य हटा दिए हैं और एक दृश्य पुनः जोड़ दिया है। स्थिति पट्टी को "अनिर्दिष्ट" होने के लिए सेट करें ताकि स्थिति पट्टी के लिए समायोजित न हो। जब जोड़ा जाता है तो दृश्य, x = 0, y = 0, w = 320 h = 460 के साथ (0,0,320,480) के बजाय बनाया जाता है जैसा कि मैंने उम्मीद की थी। ऊंचाई को 480 में बदलने और इसे फ़ाइल के मालिक से जोड़ने और पृष्ठभूमि के संबंध में विशिष्ट बनाने के लिए रंग बदलने के बाद। मुझे लगता है कि स्क्रीन के शीर्ष और दृश्य के बीच एक सफेद बैंड था। मैंने अपना कोड बढ़ाया:

#define RECTLOG (रेक्ट) (NSLog (@ "" # सही @ "x:% fy:% fw:% fh:% f", rect.origin.x, rect.origin.y, rect.size.width, rect .size.height));

viewDidLoad के भीतर

- (शून्य) viewDidLoad {
    [सुपर व्यूडीडलड];
    RECTLOG (self.view.frame);
}

पता चलता है कि जैसा कि यह आईबी से भरा हुआ है, वास्तव में दृश्य (0, 20, 320, 480) है। एक काम के रूप में मैं self.view.frame = CGRectMake (0, 0, 320, 480) के साथ दृश्य के फ्रेम को रीसेट करता हूं;

मैं आईबी 3.2.5 का उपयोग कर रहा हूं

मैं इस एक के लिए एक छोटे से फिक्स के बारे में जानना चाहूंगा।


3
FYI करें, आप CSSect का प्रतिनिधित्व करने वाले प्रिंट करने योग्य स्ट्रिंग प्राप्त करने के लिए NSStringFromCGRect (रेक्ट) का उपयोग कर सकते हैं।
बेरी

यह एक बेहतरीन FYI था, मैंने इसे चेक किया, और आप वास्तव में CGPoint और CGSize से भी एक स्ट्रिंग मान प्राप्त कर सकते हैं! बहुत पका, धन्यवाद।
FierceMonkey

1

मैंने देखा है कि xib फ़ाइल बनाते समय UIView स्वचालित रूप से बनाया गया है जिसे आकार देने वाले पैनल या किनारे के हैंडल से नहीं बदला जा सकता है।

मैंने केवल एक और UIView जोड़ना था और अपने पुराने UIView से सब कुछ नया खींच लिया और फिर पुराने को हटा दिया।

इसने मेरे लिए समस्या को हल कर दिया लेकिन हां, मुझे लगता है कि Apple के लिए इंटरफ़ेस बिल्डर के साथ एक अंतर्निहित मुद्दा है (किसी ने मुझे गलत होने पर सही करने के लिए) हल करने के लिए।

मैं XCode 4 एकीकृत इंटरफ़ेस बिल्डर का उपयोग कर रहा हूं।


0

मैंने इसे एक अलग तरीके से सुलझाया ...

अपने पसंदीदा पाठ संपादक के साथ अपने xib को खोलें और इस पंक्ति को संपादित करें

        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController">

CompassViewController आपका वर्ग नाम है जिसे आप अपने nib / xib के साथ लिंक करने का प्रयास कर रहे हैं।

बस अपने वर्ग का नाम सही वर्ग के नाम के साथ संपादित करें और आप कर रहे हैं;)


0

यहाँ छवि विवरण दर्ज करेंस्टोरीबोर्ड में UIVIew का चयन करें और विशेषताओं पर जाएं निरीक्षक "Inferred" के बजाय UIVIew आकार को "FreeForm" में बदल दें

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