2014-04-07 8 views
5

में उपकरण पट्टी को भरने के लिए एक UIToolbar में UITextField की चौड़ाई समायोजित करें, मैं एक और UIBarButtonItem (क्रिया बटन) के साथ बार (जो एक UIBarButtonItem के रूप में जोड़ा जाता है) के बीच बगल में करने के लिए एक UITextField जोड़ लिया है। मैंने बहुत बाएं और बहुत दाईं ओर लचीला स्पेस बार बटन आइटम जोड़े। यह चित्र पर बहुत अच्छा लग रहा है, लेकिन जब मैं परिदृश्य में घूमता हूं तो यह उन्हें केंद्रित करता है और ठीक दिखता है, लेकिन मुझे चौड़ाई भरने के लिए खींचने के लिए टेक्स्ट फ़ील्ड की आवश्यकता होती है और दाईं ओर दाईं ओर स्पष्ट बटन दबाएं - ठीक उसी तरह जैसे संदेश में - आईफोन और आईपैड।परिदृश्य

मैंने सोचा कि ऑटो लेआउट चाल करेगा लेकिन ऐप्पल का कहना है कि आप UIBarButtonItem एस के लिए बाधाएं नहीं बना सकते हैं। और वास्तव में जब मैं किसी भी बार बटन या टेक्स्ट फ़ील्ड का चयन करता हूं तो यह किसी भी बाधा उत्पन्न करने की अनुमति नहीं देगा।

क्या आप कृपया मुझे यह बताएं कि इसे कैसे पूरा किया जाए? धन्यवाद!

enter image description here

संपादित करें: मैं तय/लचीला रिक्त स्थान के साथ कुछ अन्य संयोजन की कोशिश की है। जब मैं नहीं जोड़ते हैं, पाठ क्षेत्र और साझा करें बटन बाईं ओर से अधिक धकेल दिया जाता है:
enter image description here

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

मैंने बाईं ओर एक निश्चित स्थान और दाईं ओर एक लचीली कोशिश की, बीच में एक निश्चित (या कोई मध्य नहीं), और यह उपरोक्त स्क्रीनशॉट जैसा दिखता है। मैं तो लचीला करने के लिए बीच एक बदल गया है और इसे इस तरह निकला:
enter image description here

अगर मैं लचीला करने के लिए पहले बदलने के लिए, बीच में कोई नहीं (या अगर मैं एक निश्चित एक जोड़ने), और सही पर flxed, यह सही करने के लिए ले जाया जाता है:
enter image description here

सभी मामलों में की चौड़ाई:
enter image description here

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

क्या मुझे रिक्त स्थान का कोई संयोजन याद आया? अगर मैं इंटरफ़ेस बिल्डर में वांछित व्यवहार को कार्यान्वित नहीं कर सकता, तो कोड को कोड में कैसे पूरा किया जाएगा?

उत्तर

9

एक क्षैतिज खींच पाठ क्षेत्र प्राप्त करने के लिए, मैं करने के लिए मैन्युअल रूप से अपने viewWillAppear में और frame सेट था भी जब उन्मुखीकरण परिवर्तन - मैं viewWillTransitionToSize:withTransitionCoordinator: प्रयोग किया है:

[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> __nonnull context) { 
    self.textField.frame = CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width - self.actionButton.width - 55, self.inputTextField.frame.size.height); 
} completion:^(id<UIViewControllerTransitionCoordinatorContext> __nonnull context) { 
}]; 


पिछला समाधान (अब मेरे लिए काम करता नवीनतम OSes में):

viewDidLoad में इस जोड़ें:

self.textField.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

enter image description here

+0

Xcode 6.2/iOS8 में मेरे लिए काम नहीं करता: UITextField एक निश्चित आकार बना रहता है, तो उपकरण पट्टी कॉम्पैक्ट आकार में काटा जाता है और यह इतना चौड़ा नियमित आकार में नहीं है। – 7stud

+0

मुझे पता चला कि यह मेरे लिए * काम * क्यों नहीं था: मैं पूर्वावलोकन में परिणाम देख रहा था, जहां आप एक ही समय में एक आईफोन और आईपैड दोनों को देख सकते हैं, यहां देखें (तथ्य यह है कि यह स्विफ्ट कहता है: ट्यूटोरियल के पास स्विफ्ट के साथ कुछ लेना देना नहीं है): https://www.youtube.com/watch?v=p5wD8dvSDbM। स्पष्ट रूप से पूर्वावलोकन केवल आपको दिखाता है कि आपने आईबी में क्या किया था, इसलिए पूर्वावलोकन उत्तर में कोड नहीं देख सकता है। नतीजतन, पूर्वावलोकन में मेरी टेक्स्टफिल्ड खींच नहीं रही थी, लेकिन जब मैं विभिन्न डिवाइसों के खिलाफ अपना कोड चलाता हूं (रन किया गया ?!) (स्टॉप बटन के दाईं ओर कूदने वाले पट्टी में डिवाइस पर क्लिक करें, और दूसरा डिवाइस चुनें), ... – 7stud

+0

... टेक्स्टफिल्ड ने उपलब्ध स्थान को फिट करने के लिए स्वयं का आकार लिया। धन्यवाद! – 7stud

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