2012-06-27 21 views
5

Desidero che il mio testo sia allineato correttamente.UILabel allineamento testo a destra

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"lisn"]; 
cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"lisn"] autorelease]; 
CGSize textSize = { 210.0, 10000.0 }; 
CGSize size = [[gMessageArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap]; 

UILabel *lisnerMessage=[[[UILabel alloc] init] autorelease]; 
lisnerMessage.backgroundColor = [UIColor clearColor]; 
[lisnerMessage setFrame:CGRectMake(75 ,20,size.width + 5,size.height+2)]; 
lisnerMessage.numberOfLines=0; 
lisnerMessage.textAlignment=UITextAlignmentRight; 
lisnerMessage.text=[gMessageArray objectAtIndex:indexPath.row]; 
[cell.contentView addSubview:lisnerMessage]; 
return cell 
} 

ma il mio testo non è allineare a destra Please Help

+0

Questa non è una risposta alla tua domanda, ma un commento sulla logica. Sei sicuro di voler aggiungere un'etichetta aggiuntiva alla tua cella ogni volta che la tabella viene aggiornata? –

+0

@PhillipMills: per ogni cella ho un testo diverso, non un testo aggiuntivo in quella cella –

+0

A meno che non ci sia codice da qualche parte che rimuove le vecchie etichette dalle celle, ciò che hai postato aggiungerà sempre un'altra etichetta ogni volta che viene chiamato per un percorso indice specifico . –

risposta

9

Poiché si utilizza sizeWithFont e quindi impostando il telaio a tale dimensione, il testo è allineato a destra. Prova a aggiungere un colore di sfondo di grigio chiaro all'etichetta per vedere di cosa sto parlando. L'etichetta deve essere impostata alle stesse dimensioni della cella della tabella e consentire al testo di fluire all'interno di essa. Quindi si allineerà a destra.

aggiornamento con il campione

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"lisn"]; 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"lisn"]; 

    UILabel *lisnerMessage = [[UILabel alloc] init]; 
    lisnerMessage.backgroundColor = [UIColor clearColor]; 
    [lisnerMessage setFrame:cell.frame]; 
    lisnerMessage.numberOfLines = 0; 
    lisnerMessage.textAlignment = NSTextAlignmentRight; 
    lisnerMessage.text = [gMessageArray objectAtIndex:indexPath.row]; 
    [cell.contentView addSubview:lisnerMessage]; 

    return cell 
} 
+0

: puoi per favore elaborare o inserire del codice riguardante la tua risposta. Sarà molto utile per me –

+1

Sì, il trucco con il diverso colore di sfondo è buono. Aiuterà Alok a capire cosa succede. Usare sizeWithFont è ok in linea di principio, ma non userei size.with per il frame. Utilizzare [lisnerMessage setFrame: CGRectMake (75, 20, textSize.width + 5, size.height + 2)]; anziché. –

+0

Ho modificato il codice con un esempio grezzo delle modifiche necessarie. Non l'ho provato su Xcode, ma questa è l'idea. ricostruisci la tua logica di conseguenza. –

0

Perché non basta fare l'etichetta nel costruttore di interfaccia/storyboard e selezionare l'opzione "Allinea a destra" l'opzione? Quindi collegalo come una proprietà denominata lisnerMessage e lisnerMessage.text=[gMessageArray objectAtIndex:indexPath.row]; Ciò ridurrebbe in modo significativo la quantità di codice che stai scrivendo e sicuramente funzionerà.

1

Finalmente ho risolto il mio problema. Stavo facendo piccolo errore

[lisnerMessage setFrame:CGRectMake(75 ,20,size.width + 5,size.height+2)]; 

Ho appena rimuovere size.width e dare coordinare mio specifico 200, dopo che il testo è allineare a destra.

[lisnerMessage setFrame:CGRectMake(75 ,20,200,size.height+2)]; 

Grazie a tutti per la vostra risposta

5

allineamento a destra per l'etichetta

yourLabel.textAlignment = NSTextAlignmentRight; 
Problemi correlati