UIToolBar आइटम संरेखित करना


112

मैंने UIBarButtonItemनीचे के रूप में तीन बनाए हैं। वे बाईं ओर संरेखित हैं और मैं केंद्र संरेखित करना चाहूंगा ताकि दाईं ओर एक अंतराल न हो। मुझे कोई संरेखित गुण नहीं दिखाई देता है UIToolBar। क्या इसे पूरा करने का एक और तरीका है?

//create some buttons
UIBarButtonItem *aboutButton = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleBordered target:self action:@selector(showAbout:)];
[toolbar setItems:[NSArray arrayWithObjects:settingsButton,deleteButton,aboutButton,nil]];
//Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];

जवाबों:


259

अपने टूलबार में अपने आइटम के बाईं और दाईं ओर दो UIBarButtonSystemItemFlexibleSpace आइटम जोड़ें

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObjects:flexibleSpace, settingsButton,deleteButton,aboutButton, flexibleSpace, nil]];

इनको जोड़ने के रूप में आप किसी अन्य टूलबार आइटम को उन दोनों के बीच समान रूप से स्थान वितरित करेंगे।


25
कई लचीले स्थान बनाने का कोई वास्तविक कारण नहीं है। यदि आपको एक से अधिक बार आवश्यकता होती है तो आप अपने टूलबार में एक से अधिक लचीली स्पेस ऑब्जेक्ट जोड़ सकते हैं।
mmc

एमएमसी सही है। वास्तव में, यह संभवत: एक सिंगलटन फ्लेक्सस्पेस को बनाने के लिए और अपने उत्पाद में पुन: उपयोग करने के लिए पूरी तरह से उचित होगा। मैंने यह दावा किया है कि यह एकल गायन का सही मूल उपयोग था: कार्यक्रम के नियमों को लागू करने के लिए नहीं, बल्कि ओवरहेड को कम करने के लिए।
Amgrammer

2
आप रिलीज़ कॉल को अपडेट करना भूल गए, पढ़ना चाहिए [फ्लेक्सिफ़िक्स रिलीज़];
डैनियल हेपर

हाँ, क्षमा करें, यह [लचीले स्थान रिलीज़] के बजाय [FlexSpaceLeft रिलीज़] को पढ़ता है। टाइपो तय
nduplessis

30

यह एक स्टोरीबोर्ड से भी किया जा सकता है।

टूलबार में केवल आइटम खींचें और छोड़ें, और वांछित प्रभाव प्राप्त करने के लिए उनमें से कुछ को लचीले या स्थिर स्थान में बदल दें। नीचे दो उदाहरण देखें।

समान स्थान

केंद्रित


8

Xamarin iOS में

सही संरेखित करें:

yourBar.SetItems(new [] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), yourButton }, false);

केंद्र संरेखित:

var flexibleSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
yourBar.SetItems(new [] { flexibleSpace, yourButton, flexibleSpace}, false);

5
यह विषय नहीं है। हम यहां शुद्ध iOS के बारे में बात कर रहे हैं।
jturolla

4
जो कि मोनोऑच टारगेट है।
हरमन स्कोनफेल्ड

2
वस्तुनिष्ठ सी प्रश्न मोनोक्च / सी # नहीं
मैक्स मैकलॉड

6
@MaxMacLeod: यह obj-c टैग नहीं है, यह iPhone टैग है। इसलिए मेरा उत्तर मान्य है। इसके विपरीत c # vs obj-c विपरीत है। स्पष्ट रूप से, c # आधुनिक, स्लिमर, अच्छा, तेज और हर तरह से बेहतर है।
हरमन स्कोनफेल्ड

12
हालांकि यह स्पष्ट हो सकता है कि प्रश्न में कोड उद्देश्य-सी था, मुझे यह उत्तर सहायक लगा। यह Google में भी एक उच्च रैंकिंग प्रश्न है।
जैकोब.टॉय 7

7

स्विफ्ट संस्करण:

    let toolbar = UIToolbar(frame: CGRectMake(0, 0, viewController.view.frame.size.width, 35.0))
    let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: viewController, action: nil)
    let button1 = UIBarButtonItem(title: "A", style: UIBarButtonItemStyle.Plain, target: viewController, action: foo)
    let button2 = UIBarButtonItem(title: "B", style: UIBarButtonItemStyle.Plain, target: viewController, action: bar)
    let button3 = UIBarButtonItem(title: "C", style: UIBarButtonItemStyle.Plain, target: viewController, action: blah)
    toolbar.items = [button1, flexibleSpace, button2, flexibleSpace, button3]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.