2012-06-27 5 views
5

Ich möchte, dass mein Text richtig ausrichten sollte.UILabel Textausrichtung rechts

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

aber mein Text nicht richtig ausrichten Bitte Hilfe

+0

Das ist keine Antwort auf Ihre Frage ist aber ein Kommentar auf der Logik. Möchten Sie Ihrer Zelle bei jeder Aktualisierung der Tabelle wirklich ein zusätzliches Label hinzufügen? –

+0

@PhillipMills: Für jede Zelle habe ich einen anderen Text, keinen zusätzlichen Text in dieser Zelle –

+0

Wenn es keinen Code gibt, der alte Beschriftungen von Ihren Zellen entfernt, wird jedes Mal, wenn Sie einen bestimmten Indexpfad aufrufen, immer eine weitere Beschriftung hinzugefügt . –

Antwort

9

Weil Sie sizeWithFont verwenden und dann den Rahmen zu dieser Größe einstellen, Ihr Text wird rechts ausgerichtet. Versuchen Sie, Ihrem Etikett eine Hintergrundfarbe von hellgrau hinzuzufügen, um zu sehen, worüber ich spreche. Ihr Label sollte auf dieselbe Größe wie Ihre Tabellenzelle eingestellt sein und den Text darin fließen lassen. Dann wird es nach rechts ausgerichtet.

Aktualisierung mit Probe

- (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

: Können Sie bitte einen Code zu Ihrer Antwort ausarbeiten? Es ist sehr hilfreich für mich –

+1

Ja, der Trick mit der anderen Hintergrundfarbe ist ein guter. Es hilft Alok zu verstehen, was passiert. Die Verwendung von sizeWithFont ist im Prinzip ok, aber ich würde size.with für den Frame nicht verwenden. Verwenden Sie [lisnerMessage setFrame: CGRectMake (75, 20, textSize.width + 5, size.height + 2)]; stattdessen. –

+0

Ich habe Ihren Code mit einem groben Beispiel für die erforderlichen Änderungen bearbeitet. Ich habe es nicht in Xcode getestet, aber das ist die Idee. Ändere deine Logik einfach entsprechend. –

0

Warum Sie nicht nur das Label in Interface Builder/Storyboard machen und wählen Sie die Option "rechts ausrichten"? Dann verbinden Sie es als eine Eigenschaft mit dem Namen LisnerMessage und lisnerMessage.text=[gMessageArray objectAtIndex:indexPath.row]; Das würde erheblich reduzieren, wie viel Code Sie schreiben und auf jeden Fall funktionieren.

1

Endlich habe ich mein Problem behoben. Ich tat kleinen Fehler

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

ich size.width einfach entfernen und gebe meinem spezifischen 200 nach koordinieren, dass der Text richtig auszurichten.

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

Dank alle für Ihre Antwort

5

Rechts-Ausrichtung für Etiketten

yourLabel.textAlignment = NSTextAlignmentRight;