2013-03-07 22 views
12

Sto generando alcuni pulsanti. Nel pulsante sto mostrando la data e un codice di riferimento dato dall'utente. Voglio che questi dati siano allineati a sinistra nel pulsante.Allineare un testo di UIButton?

Quello che ho cercato:

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

Ma questo non funziona.

- (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++; 
} 

risposta

33

È possibile utilizzare il contentHorizontalAlignment:

"L'allineamento orizzontale del contenuto (testo o immagine) all'interno del ricevitore "

e contentVerticalAlignment proprietà per questo:

"L'allineamento verticale del contenuto (testo o immagine) nel ricevitore " Utilizzo

Esempio:

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

Usare questo:

button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; 


button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 

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

Buona chiamata con 'button.contentEdgeInsets = UIEdgeInsetsMake (0, 10, 0, 0);' Ho usato questo per impostare l'inserto superiore del pulsante per correggere il fatto che 'contentVerticalAlignment 'stava centrando la linea di base del testo del pulsante. Con gli inserti sui bordi è possibile regolare per questo e al centro in base al punto centrale verticale visivo del testo. –

0

button.titleLabel.textAlignment = NSTextAlignmentLeft;

+2

non è possibile impostare l'allineamento del testo del pulsante come tih. –

0

In Swift è possibile utilizzare questo:

UIButton/uilabel.titleLabel .textAlignment = .center

NSTextAlignment è un enum lì per è possibile assegnarlo mettendo un .value

qui? sono i possibili del enum allineamento caso sinistra // visivamente allineato a sinistra

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

Dai un'occhiata alla Content-allineamento verticale in storyboard

0

3.x Swift:

button.titleLabel?.textAlignment = .center 
+0

Provato per allineamento a sinistra e titolo in etichetta ancora apparso al centro. Qualche idea per quale potrebbe essere? – cheznead

0

Per Swift 3, i seguenti ha lavorato per me:

button.contentHorizontalAlignment = .left 
button.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0) 
Problemi correlati