मैंने इंटरफ़ेस बिल्डर में निम्न ऑटो लेआउट बनाया है:
जैसा कि आप देख सकते हैं कि मैंने बटन को कोई ठीक आकार नहीं दिया। मैं इस परिणाम पर जाने के लिए प्रोग्राम को दो बटन जोड़ना चाहता हूं:
बाधाओं को प्रोग्राममैटी जोड़ना मुझे पता है कि यह कैसे करना है, कम से कम मैं सिंटैक्स को जानता हूं।
मेरी समस्या तब होती है जब उन बटनों को बनाने के लिए?
I बटन की चौड़ाई के आधार पर चौड़ाई की बाधा बनायें 4. अगर मैं इसे डिडलोड (यदि मैं गलत नहीं हूँ) में करता हूं, तो ऑटो लेआउट अभी तक सेट नहीं किया गया है, इसलिए चौड़ाई (और ऊंचाई) गलत हो जाएगी।
मैंने इसे विडम्बना में देखा था DidLayoutSubviews लेकिन जैसा कि इसे दृश्यकॉन्टर लोड करते समय कई बार कहा जाता है, मुझे एक-दूसरे पर स्टैक किया गया कई बटन मिलते हैं और जब मैं परिदृश्य में जाता हूं तो अधिक बटन जोड़े जाते हैं ..
P> मुझे सही बटन रखने के लिए उन बटन को कब बनाना चाहिए?
ऑटो लेआउट उन नियमों के बारे में है जो हर समय, किसी एक पल में फ्रेम आकार के बारे में (मुख्यतः) नहीं।
आपको बटन 5 के फ्रेम के फ्रेम के बारे में परवाह नहीं करना चाहिए 4 जब आप 5 और 6 बटनों के लिए बाधाओं को सेट करते हैं। बाधा है कि आप बटन 5 और 6 के लिए जोड़ बटन 4 की चौड़ाई विशेषता को इंगित करना चाहिए, अंकों की वर्तमान चौड़ाई के अनुसार नहीं। यही है, आप इस तरह एक बाधा पैदा कर सकते हैं:
<पूर्व> NSLayoutConstraint * constraint = [NSLayoutConstraint बाधा के साथआइटमेटम: बटन 5 विशेषता: एनएसएलआउटआउटविड्थ संबंधित संबंधित: NSLayoutRealationEqual toItem: button4 विशेषता: एनएसलायआउटएट्रीविविएशनउत्पादक: 1 निरंतर: 0]; Constraintactive = हाँ; // OR: [button5.superview addConstraint: constraint]
यह एक बाधा है जो बटन 5 की चौड़ाई को बटन 4 की चौड़ाई के समान रखेगा, भले ही बटन 4 की चौड़ाई परिवर्तन हो। आप ऊँचाई के लिए भी वही करेंगे, और बटन के लिए 6. आदि।
एक और तरीका रखो, आप जो रनटाइम पर बना रहे हैं, उनके समान होना चाहिए, यदि आप डिजाइन समय पर ऐसा कर रहे थे । यह मेरे लिए नहीं दिखता है जैसे आपने बटन पर स्पष्ट, निश्चित ऊंचाई और चौड़ाई की बाधाएं बनाई हैं 4. आपने अपनी ऊंचाई और चौड़ाई को अन्य दृश्यों से संबंधित रिश्तेदार बाधाओं को बना लिया है।
एक चीज़ जो आपके पास होगी करने के लिए: जब से बटन 2 और 4 में कंटेनर (या उसके मार्जिन) में स्थान की कमी हो रही है, तब आपको उन बाधाओं को हटाने की आवश्यकता होगी जब आप बटन 5 और 6 जोड़ते हैं। बटन 2 और 4 में बार्ट 5 पर बाधाएं चलनी पड़ती हैं और 6, क्रमशः, और बटन 5 और 6 को कंटेनर में बाधाओं का पीछा करना होगा असल में, आपको कंटेनर में बटन 4 की अनुगामी बाधा से छुटकारा पा जाना चाहिए और उसे पिछली अनुरेखण बाधा से 2 बटन पर ले जाना चाहिए। इसी तरह, बटन 6 के अनुगामी बढ़त को बटन 5 के साथ गठबंधन किया जाना चाहिए, जो कि पर्यवेक्षण से अलग नहीं है। इस तरह, आपको केवल एक बाधा को दूर करना होगा (बटन 2 को पर्यवेक्षण के लिए अनुगामी करना) और एक जोड़ें (बटन 5 का पर्यवेक्षण करने के लिए अनुगामी है)।
No comments:
Post a Comment