iOS ऑटोलेयूट: बराबर चौड़ाई के दो बटन, साथ-साथ


92

मुझे वर्तमान में AutoLayout से कठिनाई हो रही है। मैं इंटरफ़ेस बिल्डर का उपयोग कर रहा हूं और निम्नलिखित छवि में सचित्र के रूप में समान चौड़ाई के दो बटन लगाने की कोशिश कर रहा हूं।

उद्देश्य लेआउट

निम्न पूर्वावलोकन छवि से, मेरा शीर्षकइमेज ठीक से बाधित हो गया है और सही ढंग से प्रदर्शित हो रहा है, हालांकि बटन नहीं हैं। मैंने titleImage के अग्रणी किनारे के साथ बटन 1 को संरेखित करके प्रयोग किया है, और titleImage के पीछे के किनारे के साथ बटन 2, हालांकि दो बटन के बीच चौड़ाई वितरण इस बिंदु पर तिरछा हो जाता है, जैसा कि नीचे दिखाया गया है।

समस्या परिदृश्य

मेरा उद्देश्य यह समझना है कि क्या बाधाएं गायब हैं और डिवाइस की परवाह किए बिना समान चौड़ाई बनाए रखने के लिए दो बटन पर लागू किया जाना चाहिए। यदि संभव हो तो मैं अतिरिक्त कोड के विपरीत इंटरफ़ेस बिल्डर के माध्यम से इसे प्राप्त करना चाहूंगा।


1
चिनाई कार्यक्रम के माध्यम से ऐसा करने के लिए एक अनुशंसित तरीका है। लिंक: github.com/Masonry/Masonry
Itachi

1
यहाँ लिंक है ... आप देख सकते हैं ... stackoverflow.com/questions/29620409/…
EI Captain v2.0

जवाबों:


246

निम्नलिखित बाधाओं को जोड़ें

  1. बटन 1 से बटन 2 तक समान चौड़ाई असाइन करें।
  2. दोनों बटन के बीच क्षैतिज रिस्पांस असाइन करें।
  3. अपने पर्यवेक्षण के लिए button1 से प्रमुख स्थान निर्दिष्ट करें।
  4. अपने पर्यवेक्षक को बटन 2 से अनुगामी स्थान निर्दिष्ट करें।
  5. दोनों बटन के लिए शीर्ष स्थान असाइन करें।
    अगर यह आप के लिए काम करता है तो मुझे बतलाएगा।

7
उत्कृष्ट - यह मेरे लिए काम किया। विशेष रूप से बिंदु # 2 - एक क्षितिज रिक्ति जोड़ना।
स्क्रेचा

वाह !!! तुम क्या मतलब है? यह वास्तव में एक आकर्षण की तरह काम करता है, और मैं लगभग 3 घंटे बर्बाद कर चुका हूँ! :( मेरे मामले में मेरे पास सुपर व्यू में बराबर चौड़ाई के दो दृश्य थे जो इसे विभाजित कर रहे थे। हालाँकि इसने मुझसे अंत में कुछ ऐसा पूछा, जैसे "वाई या हाइट के लिए विवशता की आवश्यकता है" मैंने "लापता बाधाओं को जोड़ने" का विकल्प चुना और यह हल हो गया।
रंडिका विशमन

@Abubakr: यह केवल एक स्क्रीन आकार के लिए काम करता है क्योंकि दोनों बटन को एक ही चौड़ाई मिली है।
एजी

1
2 से अधिक आसन्न UI तत्वों के लिए भी काम करता है!
siege_Perilous

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

80

आसान समाधान के लिए स्टेप्स और स्क्रीनशॉट का पालन करें


चरण 1)

  • बटन 1 के लिए: बाधाओं को सेट करें: (1) अग्रणी, (2) अपनी आवश्यकता के अनुसार ऊपर या नीचे, (3) ऊँचाई


चरण 2)

  • बटन 2 के लिए: बाधाओं को सेट करें: (1) अनुगामी, (2) अपनी आवश्यकता के अनुसार ऊपर या नीचे, (3) ऊँचाई

चरण 3)

  • बटन 1 से बटन 2 तक Ctrl + खींचें

  • क्षैतिज स्थान का चयन करें


चरण 4)

  • दोनों बटन (कमांड का उपयोग करके) का चयन करें और बाधाओं को बराबर चौड़ाई जोड़ें


आउटपुट

आशा है कि यह आपकी मदद करता है :)


1
ऊंचाई तय नहीं होनी चाहिए। स्क्रीन-आकार के अनुसार दृश्य की ऊंचाई तय करने दें।
कुणाल कुमार

@KunalKumar इस मामले में ऊँचाई निश्चित है। क्या आप मुझे बता सकते हैं कि आपने क्या किया?
Vvk

@Vvk ... परफेक्ट भाई :)
जयवंत खेडकर

18

IOS9 में ढेर लेआउट, वास्तव में अच्छा काम करेंगे। स्टैक दृश्य को अपने दृश्य में जोड़ें और निम्नानुसार कॉन्फ़िगर करें:

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


2

आप मेरे उदाहरण की जांच कर सकते हैं - आनुपातिक बाधा का उपयोग करके आप इसे आसान बना सकते हैं। इसके अलावा, आप आनुपातिक कई UIViews को आसान बना सकते हैं कृपया संलग्न उदाहरण देखें

https://dl.dropboxusercontent.com/u/48223929/TestViewController.xib


0

मेरा समाधान है

  1. दो बटनों के बीच में एक छोटा सा दृश्य रखें और इसे केंद्र बनाएं (कंटेनर में क्षैतिज केंद्र और 0 के रूप में समतल में ऊर्ध्वाधर केंद्र)।
  2. छोटे दृश्य में ऊंचाई और चौड़ाई जोड़ें।
  3. बटन बाधाओं को जोड़ें और छोटे दृश्य के लिए क्षैतिज स्थान की कमी दें।
  4. छोटे दृश्य पृष्ठभूमि के रंग को बटन या दृश्य के रंग के समान दें।

नोट: स्क्रीनशॉट देखें।

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

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