2012-02-17 9 views
29

समस्या:
एक बटन के titleEdgeInset और UITextAlignmentLeft बटन के शीर्षक की स्थापना अभी भी केंद्रित है के बाद, बाईं ओर संरेखित नहीं।UITextAlignmentLeft के साथ आईओएस UIButton अभी भी पाठ केंद्रित कर रहा है?

विवरण:
मैं विस्तृत बाईं तरफ के एक छवि के साथ एक कस्टम पृष्ठभूमि का उपयोग करते हुए एक बटन 200px है। चूंकि मैं छवि शीर्षक को कवर करने के लिए बटन शीर्षक नहीं चाहता हूं, इसलिए मैं titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0); का उपयोग करके शीर्षक को इन्सेट करता हूं। यह शीर्षक लेबल की एक्स स्थिति 45px पर शुरू होनी चाहिए और 200px पर समाप्त होनी चाहिए। मैं यह भी चाहता हूं कि बटन का शीर्षक छवि पर बाएं-गठबंधन हो, इसलिए मैंने textAlignment = UITextAlignmentLeft भी सेट किया है। हालांकि, शीर्षक टेक्स्ट अभी भी 45px और 200px के बीच केंद्रित है, गठबंधन नहीं छोड़ा गया है।

क्यों?

button.titleEdgeInsets = UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0); 
button.titleLabel.textAlignment = UITextAlignmentLeft; 
[button setTitle:@"X"]; 

उत्तर

80

मेरे परीक्षण कोड:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(20, 20, 200, 72); 
UIImage *image = [UIImage imageNamed:@"rob.png"]; 
[button setImage:image forState:UIControlStateNormal]; 
button.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 
[button setTitle:@"Hello" forState:UIControlStateNormal]; 
button.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0); 
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
[self.view addSubview:button]; 

ध्यान दें कि मैं button.contentHorizontalAlignment, नहीं button.titleLabel.textAlignment निर्धारित किया है। मेरे परिणाम: बटन के लिए

Screen shot of label

4

titleLabel पर एक पृष्ठभूमि रंग रखो:

यहाँ प्रासंगिक कोड है। मैं शर्त लगा रहा हूं कि इसे फिट करने के लिए आकार दिया जा रहा है, इसलिए टेक्स्ट संरेखण कोई फर्क नहीं पड़ता। यह केवल तब तक है जब तक यह होना आवश्यक है। आपको ठीक करने की ज़रूरत है लेबल की स्थिति ही है। आपको UIButton का विस्तार करना होगा और इसे सही करने के लिए लेआउट सबव्यूव्यू ओवरराइड करना होगा। मैंने किसी भी बटन के साथ एक बटन कभी नहीं देखा है।

22

सेट contentHorizontalAlignment संपत्ति है, यह काम करेंगे।

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
2
एक बटन के लिए

सेट contentHorizontalAlignment संपत्ति:

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
0

बस बटन के सेटर ओवरराइड और सेटर में contentHorizontalAlignment संपत्ति सेट करने का प्रयास:

-(UIButton *)yourButton { 
     [_yourButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft]; 

    return _yourButton; 
} 
1

स्विफ्ट 3

सामग्री सेट करें क्षैतिज हस्ताक्षर संपत्ति काम करते हैं। धन्यवाद

yourButton.contentHorizontalAlignment = .left