2012-02-17 33 views
29

Sự cố:
Sau khi đặt nút titleEdgeInsetUITextAlignmentLeft tiêu đề của nút vẫn được căn giữa, không căn trái.iOS UIButton với UITextAlignmentLeft vẫn định tâm văn bản?

chi tiết:
Tôi có một nút 200px rộng sử dụng một nền tùy chỉnh với một hình ảnh bên trái. Vì tôi không muốn tiêu đề nút che phủ hình ảnh, tôi chèn tiêu đề bằng cách sử dụng titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);. Điều này sẽ làm cho vị trí x của nhãn tiêu đề bắt đầu ở 45px và kết thúc ở 200px. Tôi cũng muốn tiêu đề của nút được căn trái với hình ảnh, vì vậy tôi cũng đặt textAlignment = UITextAlignmentLeft. Tuy nhiên, văn bản tiêu đề vẫn nằm giữa 45px và 200px, không căn trái.

Tại sao?

Dưới đây là các mã có liên quan:

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

Trả lời

80

mã kiểm tra của tôi:

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]; 

Lưu ý rằng tôi đặt button.contentHorizontalAlignment, không button.titleLabel.textAlignment. Kết quả của tôi:

Screen shot of label

4

Đặt một màu nền trên titleLabel. Tôi cá là nó có kích thước vừa vặn, nên việc căn chỉnh văn bản sẽ không thành vấn đề. Nó chỉ miễn là nó cần phải được. Những gì bạn cần sửa là vị trí của nhãn. Bạn có thể phải mở rộng UIButton và ghi đè lên layoutSubviews để làm cho nó đúng. Tôi chưa bao giờ nhìn thấy một nút với bất cứ thứ gì ngoài nhãn trung tâm.

22

bộ tài sản contentHorizontalAlignment cho nút, nó sẽ làm việc.

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
2
tài sản

Set contentHorizontalAlignment cho một nút:

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
0

Chỉ cần ghi đè setter của nút và cố gắng thiết lập thuộc tính contentHorizontalAlignment trong setter:

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

    return _yourButton; 
} 
1

Swift 3

Đặt nội dung Bất động sản HorizontalAlignment thực hiện công việc. Cảm ơn

yourButton.contentHorizontalAlignment = .left 
Các vấn đề liên quan