2012-02-17 8 views
29

Problem:
Po ustawieniu guzik za titleEdgeInset i UITextAlignmentLeft tytuł przycisku jest nadal skupione, nie wyrównany do lewej.Unieruchomienie w systemie iOS z UITextAlignmentLogt nadal wycentrowany tekst?

Szczegóły:
Mam przycisk 200px szerokości przy użyciu niestandardowego tła z obrazka po lewej stronie. Ponieważ nie chcę, aby tytuł przycisku obejmował obraz, wstawiam tytuł przy użyciu titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);. Powinno to spowodować, że pozycja x etykiety tytułu zaczyna się od 45 pikseli, a kończy na 200 pikseli. Chcę również, aby tytuł przycisku był wyrównany do lewej do obrazu, więc ustawiłem też textAlignment = UITextAlignmentLeft. Jednak tekst tytułu nadal jest wyśrodkowany między 45 a 200 pikseli, a nie wyrównany do lewej.

Dlaczego?

Oto odpowiedni kod:

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

Odpowiedz

80

Mój kod testowy:

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

Zauważ, że mogę ustawić button.contentHorizontalAlignment, nie button.titleLabel.textAlignment. Mój wynik:

Screen shot of label

4

Put kolor tła na titleLabel. Założę się, że jest dopasowany do rozmiaru, więc wyrównanie tekstu nie ma znaczenia. To tylko tak długo, jak powinno być. To, co musisz naprawić, to pozycja samej etykiety. Być może będziesz musiał przedłużyć UIButton i przesłonić layoutSubviews, aby uzyskać odpowiedni wynik. Nigdy nie widziałem przycisku z niczym, tylko z wyśrodkowaną etykietą.

22

zestaw właściwość contentHorizontalAlignment dla przycisku, to będzie działać.

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
2
nieruchomość

Set contentHorizontalAlignment dla przycisku:

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
0

Wystarczy zastąpić Buttona setter i spróbuj ustawić właściwość contentHorizontalAlignment w seter:

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

    return _yourButton; 
} 
1

Swift 3

Ustaw zawartość Właściwość HorizontalAlignment wykonuje pracę. Dzięki

yourButton.contentHorizontalAlignment = .left 
Powiązane problemy