2013-03-07 15 views
12

Generuję kilka przycisków. W przycisku wyświetlam datę i identyfikator referencyjny podany przez użytkownika. Chcę, aby te dane zostały wyrównane w przycisku.Wyrównywanie tekstu UIButton?

Co próbowałem:

[button.titleLabel setTextAlignment:UITextAlignmentLeft]; 
button.titleLabel.textAlignment = UITextAlignmentLeft; 

Ale to nie działa.

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
[scrollView setScrollEnabled:YES]; 
[scrollView setContentSize:CGSizeMake(320, 500)]; 

int i = 0; 

for (CalculatorData *data in calcDatas) { 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 


    button.frame = CGRectMake(1 , 20 + i*40, 295, 30); 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"MM/dd/yyyy HH:MM:SS"]; 

    NSString *dateString = [dateFormat stringFromDate:data.updateDate]; 

    NSString *title = [NSString stringWithFormat:@"%@ : %@",dateString,[data dataKey]]; 


    [button setTitle:title forState:UIControlStateNormal]; 


    [button addTarget:self action:@selector(buttonPressed:) 
    forControlEvents:UIControlEventTouchUpInside]; 
    button.tag = data.calcId; 


    [scrollView addSubview:button]; 
    i++; 
} 

Odpowiedz

33

Można użyć contentHorizontalAlignment:

"Poziome wyrównanie zawartości (tekst lub obraz) w odbiorniku "

i contentVerticalAlignment właściwości następująco:

. "Pionowe wyrównanie zawartości (tekst lub obraz) w odbiorniku "

Przykład użycia:

button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
button.contentVerticalAlignment = UIControlContentVerticalAlignmentTop; 
2
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
button.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 
7

Służy:

button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; 


button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 

button.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 
+0

Dobre połączenie z 'button.contentEdgeInsets = UIEdgeInsetsMake (0, 10, 0, 0);' Użyłem tego aby ustawić górną wstawkę przycisku, aby naprawić fakt, że funkcja 'contentVerticalAlignment' wyśrodkowała linię bazową tekstu przycisku. Przy krawędziach można dopasować do tego i wyśrodkować w oparciu o wizualny pionowy punkt środkowy tekstu. –

0

button.titleLabel.textAlignment = NSTextAlignmentLeft;

+2

nie można ustawić wyrównania tekstu przycisku, tak jak w przypadku tihs. –

0

w Swift można użyć to:

uibutton/uilabel.titleLabel .textAlignment = .Center

NSTextAlignment jest enum tam można przypisać go poprzez umieszczenie .Value

tutaj? są możliwe wyrównanie enum na przypadek Lewy // Wizualnie wyrównane do lewej

case Center // Visually centered 
case Right // Visually right aligned 
/* !TARGET_OS_IPHONE */ 
// Visually right aligned 
// Visually centered 

case Justified // Fully-justified. The last line in a paragraph is natural-aligned. 
case Natural // Indicates the default alignment for script 
1

enter image description here

Zapraszamy do obejrzenia Content-pionie w serii ujęć

0

Swift 3.x:

button.titleLabel?.textAlignment = .center 
+0

Próbowałem tego dla wyrównania do lewej, a tytuł na etykiecie nadal pojawiał się w środku. Jakieś pomysły, dlaczego tak się dzieje? – cheznead

0

Dla Swift 3 dodaje pracował dla mnie:

button.contentHorizontalAlignment = .left 
button.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0) 
Powiązane problemy