UIButton के टेक्स्ट अलाइनमेंट सेंटर कैसे बनाएं? आईबी का उपयोग करना


139

मैं IB का उपयोग कर केंद्र के रूप में UIButton का शीर्षक सेट नहीं कर सकता। मेरा शीर्षक मल्टी लाइन है।
यह इस तरह दे रहा है
यहां छवि विवरण दर्ज करें

लेकिन मुझे ऐसा ही चाहिए
यहां छवि विवरण दर्ज करें

मैंने इसमें जगह दी है लेकिन मैं ऐसा नहीं करना चाहता। जैसा कि यह कुछ मामलों के लिए बिल्कुल संरेखित नहीं है और मुझे पता है कि संरेखण को सेट करने के लिए यूआईबेल की संपत्ति है, लेकिन मैं उसके लिए एक कोड नहीं लिखना चाहता हूं .. बस आईबी से सब कुछ सेट करना चाहता हूं।

धन्यवाद


7
कुमार राठौर - कोड द्वारा कोशिश करेंself.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
सागर आर। कोठारी

1
@ स्पार्क मुझे पता है कि यह कोड के द्वारा कैसे किया जाता है, लेकिन जो मैं चाहता था वह 'आईबी' का उपयोग करके इसे सेट करना है।
इंदर कुमार राठौर

मुझे पता है, आप इसे आईबी का उपयोग करके सेट करना चाहेंगे। लेकिन ऐसी संपत्ति केवल कोड के माध्यम से सुलभ है।
सागर आर। कोठारी

यह आईबी के माध्यम से सुलभ है इसे जिम्मेदार ठहराया गया है, लेकिन कौन परवाह करता है!
यूसुफ मोवाद

@YoussefSami हाँ तुम सही हो रही हो stackoverflow.com/a/5865500/468724
इंद्र कुमार राठौर

जवाबों:


197

यह वही बना देगा जो आप उम्मीद कर रहे थे:

उद्देश्य सी:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

IOS 6 या उच्चतर के लिए

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

जैसा कि tyler53 के उत्तर में बताया गया है

स्विफ्ट:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

स्विफ्ट 4.x और ऊपर

myButton.titleLabel?.textAlignment = .center

1
यह iOS के बाद के संस्करणों में NSTextAlignment बन गया है।
सुलिवन

4
thas कोड काम नहीं करता है, सबसे अच्छा जवाब है @joetjahmyButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
अल्बर्टो मायर

8
इंटरफ़ेस बिल्डर के रूप में प्रश्न में स्पष्ट रूप से आईबी का उल्लेख है । यह वह जगह है नहीं सही जवाब है, क्योंकि यह कोडिंग की आवश्यकता है।
स्विफ्टआर्किटेक्ट

1
स्विफ्ट 4: myButton.titleLabel ?textAlignment = .सेंटर
लुईस ब्लैक

'केंद्र' का नाम बदलकर 'केंद्र' कर दिया गया है
ModusPwnens

106

लाइन का उपयोग करें:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

यह सामग्री (क्षैतिज रूप से) को केंद्र में रखना चाहिए।

और यदि आप पाठ को लेबल के अंदर केंद्र में भी सेट करना चाहते हैं, तो उपयोग करें:

[labelOne setTextAlignment:UITextAlignmentCenter];

यदि आप IB का उपयोग करना चाहते हैं, तो मुझे यहां एक छोटा सा उदाहरण मिला है जो XCode 4 में जुड़ा हुआ है, लेकिन पर्याप्त विवरण प्रदान करना चाहिए (मन भी, उस गुण स्क्रीन के शीर्ष पर यह गुण टैब दिखाता है। आप XCode में समान टैब पा सकते हैं। 3.x): यहां छवि विवरण दर्ज करें


1
धन्यवाद ... लेकिन मैं इसे आईबी के माध्यम से सेट नहीं करना चाहता। :( ऐसा करने का मेरा अंतिम विकल्प है ...
इंद्र कुमार राठौर

1
@ इंदर कुमार राठौर: कोई बात नहीं। IB में इसे सेट करने के लिए, आपको लेबल पर क्लिक करना चाहिए, फिर Attributes Inspector में, Alignment को "Center" पर सेट करें। मेरे IB (XCode 4) में, पाठ के संरेखण को दिखाने वाले 3 आइकन हैं। जाहिर है, आपको बीच में से एक को चुनना चाहिए।
जोएताजह

क्या आप मुझे स्क्रीन शॉट भेज सकते हैं ... क्या यह बटन का लेबल है या आपने लाइब्रेरी से उइबेल को हटा दिया है ??? मुझे लगता है कि यह उइलबेल नहीं बटन का लेबल है
इंद्र कुमार राठौर

@ इंदर कुमार राठौर: अरे, मेरे द्वारा जोड़े गए स्क्रीनशॉट को देखें। मैंने वास्तव में आपके द्वारा उपयोग किए जाने वाले लेबल को गलत समझा है, मैं अभी भी UIButton में पाठ के बजाय UILabel पर सोच रहा था। स्क्रीनशॉट दिखाता है कि IB के माध्यम से UIButton पर कैसे संरेखित करें।
जोएतजाह

1
मुझे संपादित नहीं करने देंगे, लेकिन NSTextAlignmentCenter ने UITextAlignmentCenter का स्थान ले लिया है। उनका मतलब बिल्कुल वही चीज है जो थो। developer.apple.com/library/iOS/documentation/UIKit/Reference/…
OC रिकार्ड

89

solution1

आप स्टोरीबोर्ड में मुख्य पथ सेट कर सकते हैं

टेक्स्ट को अपने बहुस्तरीय शीर्षक जैसे hello + पर सेट करें multiline

आपको टेक्स्ट को अगली पंक्ति में ले जाने के लिए + दबाना होगा

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

फिर कुंजी पथ जोड़ें

titleLabel.textAlignmentके रूप में Numberऔर मूल्य 1, 1साधन NSTextAlignmentCenter
titleLabel.numberOfLinesके रूप में Numberऔर मूल्य 0, 0लाइनों के किसी भी संख्या का मतलब

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

यह आईबी / एक्सकोड पर प्रतिबिंबित नहीं होगा, लेकिन रन टाइम (डिवाइस / सिम्युलेटर) के केंद्र में होगा

यदि आप Xcode पर परिवर्तन देखना चाहते हैं, तो आपको निम्नलिखित कार्य करने होंगे: (याद रखें कि आप इन चरणों को छोड़ सकते हैं)

  1. बटन को डिज़ाइन करने योग्य बनाने के लिए UIButton को उपखंड करें:

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}

  2. आपके द्वारा संशोधित किए जा रहे बटन पर इस डिज़ाइन किए गए उपवर्ग को असाइन करें:

इंटरफ़ेस बिल्डर का उपयोग करके बटन के वर्ग को बदलने का तरीका दिखा रहा है

  1. Iff किया सही है, आप IB में दृश्य अद्यतन देखेंगे जब Designables राज्य "अप टू डेट" है (जिसमें कई सेकंड लग सकते हैं):

इंटरफ़ेस बिल्डर में डिज़ाइन करने योग्य और डिफ़ॉल्ट बटन की तुलना करना



Solution2

यदि आप कोड लिखना चाहते हैं, तो लंबी प्रक्रिया करें

1. IBOutletबटन के लिए
बनाएँ 2. देखें कोड में देखें

btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0


Solution3

Xcode के नए संस्करण में हम संपत्ति जिम्मेदार ठहराया शीर्षक है (मेरा xcode 6.1 है)
का चयन करें Attributedतो नीचे दिए गए लेख और प्रेस केंद्र विकल्प का चयन करें

पुनश्च यह पाठ बहुस्तरीय नहीं आ रहा था कि मुझे सेट करना होगा

btn.titleLabel.numberOfLines = 0

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


समाधान 3 के लिए, आप बस जोड़ सकते हैं Line Breaking = Clip, यह पाठ को
मल्टीलाइन में

समाधान 3 में समस्या है, कम से कम Xcode 11.3.1 के साथ: जब मैं बटन का शीर्षक बदलता हूं, तो यह काम नहीं करता है। जब मैंने उपयोग किया btn.titleLabel.textAlignment, तो यह बहुत अच्छा काम करता है।
ब्रायन होंग

27

UIButton के लिए आपको उपयोग करना चाहिए: -

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];


13

आप में से जो अब iOS 6 या उच्चतर का उपयोग कर रहे हैं, उनके लिए UITextAlignmentCenter को हटा दिया गया है। अब यह NSTextAlignmentCenter है

उदाहरण: mylabel.textAlignment = NSTextAlignmentCenter;पूरी तरह से काम करता है।


12

स्विफ्ट 4 के लिए, एक्सकोड 9

myButton.contentHorizontalAlignment = .center

मैंने myButton.titleLabel; .numberOfLines = 0 सेट किया और इसने बटन को केंद्र में स्थित कर दिया, इसलिए मैं यह पता लगाने की कोशिश कर रहा था कि पाठ को बटन के भीतर बाईं ओर संरेखित कैसे किया जाए और यह काम करता है।
अधिकतम

7

मान लें कि btn एक UIButton को संदर्भित करता है, क्षैतिज रूप से केंद्रित होने के लिए एक बहु-पंक्ति कैप्शन को बदलने के लिए, आप निम्न कथन का उपयोग iOS 6 या बाद में कर सकते हैं:

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4

UITextAlignmentCenter iOS6 में पदावनत किया गया है

इसके बजाय आप इस कोड का उपयोग कर सकते हैं:

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


UIButton callee textAlignment के लिए कोई संपत्ति नहीं है।
रवि

IOS में UIButton के लिए ऐसी कोई संपत्ति नहीं है
जयप्रकाश दुबे

वह बटन का अर्थ है। TitleLabel.textAlignment
OC



3

वास्तव में आप इसे इंटरफ़ेस बिल्डर में कर सकते हैं।

आपको शीर्षक "Attributed" पर सेट करना चाहिए और फिर केंद्र संरेखण चुनें।


यदि यह जिम्मेदार है तो हम स्टोरीबोर्ड के माध्यम से टेक्स्टकोलर, फ़ॉन्ट आदि को सेट नहीं कर सकते हैं।
विनेश टीपी

3

इस तरह की कोशिश करें:

yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

2

आप स्टोरीबोर्ड से ऐसा कर सकते हैं। अपना बटन चुनें। लाइन ब्रेक 'वर्ड रैप' सेट करें, अपने शीर्षक 'प्लेन' को 'अटैच' में सेट करें। 'केंद्र संरेखण' का चयन करें। यह भाग महत्वपूर्ण है => क्लिक करें ... (अधिक) बटन। और 'चरित्र आवरण' के लिए लाइन ब्रेकिंग मोड का चयन करें।


1

UIButton setTextAlignment का समर्थन नहीं करेगा। तो आप बटन पाठ संरेखण के लिए setContentHor क्षैतिजAlignment के साथ जाने की जरूरत है

आपके सन्दर्भ के लिए

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