2015-03-13 7 views
8

NSLayoutConstraint (iOS 8.0 में) में अक्षम किया जा रहा NSLayoutConstraints एक BOOL संपत्ति active कहा जाता है जो उसे निष्क्रिय करने के लिए आसान बनाता है है/सक्षम कहा ऑन-द-मक्खी लेआउट बाधा।सक्षम/InterfaceBuilder

जो मैं तो प्रोग्राम के रूप में (दोनों सेट के लिए NSLayoutConstraints के IBOutletCollection के माध्यम से)/अक्षम सक्षम कर सकते हैं एक दृश्य नियंत्रक के लिए निर्धारित एक दूसरे लेआउट, मैं इंटरफ़ेस बिल्डर में मेरी पहले से परिभाषित लेआउट की कमी अक्षम करना होगा बनाने के लिए।

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

क्या ऐसा करने का कोई विकल्प है?

अग्रिम धन्यवाद

Malte

अतिरिक्त जानकारी: SDK Version: 8.1Deployment Target 8.0

उत्तर

18

बाधा आप स्टोरीबोर्ड में अक्षम करना चाहते हैं, और विकल्प चुनें + कमान + गुण दिखाने के लिए इंस्पेक्टर, फिर स्थापित का चयन रद्द करें।

+8

वाह धन्यवाद जो काम करता है, मैं वास्तव में स्थापित अनचेक करने से उन्हें इस आकार वर्ग में पहुंच से बाहर कर दूंगा! आपका बहुत बहुत धन्यवाद! – Malte

+0

एक्सकोड 8 में आपको इसे सक्षम करने के लिए "विशेषता भिन्नता का उपयोग करें" विकल्प जांचना होगा। –

+0

@AmmarMujeeb आप यह कहां करते हैं? – shim

10

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

समस्या का मेरा समाधान यह सुनिश्चित करना था कि सभी बाधाओं को स्थापित किया गया था और कुंजी 'सक्रिय', प्रकार 'बूलियन' और मूल्य 'झूठी' के साथ उपयोगकर्ता द्वारा परिभाषित रनटाइम विशेषता जोड़ने के लिए।

उपयोगकर्ता द्वारा परिभाषित रनटाइम विशेषता पैनल कस्टम क्लास फ़ील्ड के नीचे पहचान निरीक्षक में पाया जा सकता है।

+0

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

+1

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

+1

आप हमेशा चेतावनी को चुप करने के लिए 99 99 तक सक्रिय नहीं होने वाली बाधा की प्राथमिकता निर्धारित कर सकते हैं। – bencallis

0

Xcode 8 और स्विफ्ट 3, इंस्पेक्टर टैब का उपयोग करके हो रही कोई चेतावनी इंटरफ़ेस बिल्डर पर स्थापित बॉक्स को अनचेक था बिना मेरे समाधान:

Installed box on Interface builder

फिर IBOutlets बना सकते हैं और जोड़ सकते हैं/प्रोग्राम के रूप में पर उन्हें हटाने viewDidLayoutSubviews()

view.removeConstraints([constraints to remove, ...]) 
view.addConstraints([constraints to add, ...]) 

पहले की कमी दूर करने के लिए सुनिश्चित करें, अन्यथा आपको संदेश लॉग मिलेगा बाधाओं को एक साथ संतुष्ट करने में असमर्थ ...

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^