2012-02-17 29 views
29

問題:
設置按鈕的titleEdgeInsetUITextAlignmentLeft按鈕的標題仍然集中後,不左對齊。帶UITextAlignmentLeft的iOS UIButton仍然居中文本?

詳情:
我有一個按鈕200像素寬的使用與左側的圖像的自定義背景。由於我不希望按鈕標題覆蓋圖像,因此我使用titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);插入標題。這應該使標題標籤的x位置開始於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並重寫layoutSubviews才能正確使用它。我從來沒有見過一個只有中心標籤的按鈕。

22

集contentHorizo​​ntalAlignment屬性按鈕,它會工作。

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
2

設置contentHorizo​​ntalAlignment屬性按鈕:

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
0

只是覆蓋按鈕的setter和嘗試設置contentHorizo​​ntalAlignment財產二傳手:

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

    return _yourButton; 
} 
1

斯威夫特3

設置內容Horizo​​ntalAlignment屬性完成這項工作。謝謝

yourButton.contentHorizontalAlignment = .left