2012-10-19 62 views
0

我試圖在多行中呈現我的UILabel。 我已經試過:在iOS5中多行渲染UILabel?

CGRect rect2 = CGRectMake(100, 45, 150, 60); 
    FontLabel *addresLbl1 = [[FontLabel alloc] initWithFrame:rect2 
                 fontName:@"arial" pointSize:12.0f]; 
    //#006000 
    addresLbl1.textColor = [UIColor colorWithRed:84/255.0 green:84/255.0 blue:84/255.0 alpha:1.0]; 
    addresLbl1.text = @"401 King St\\nToronto, Ontario, M5V1K1\\nCanada"; 
    //[addresLbl1 setTextAlignment:UITextAlignmentCenter]; 
    addresLbl1.backgroundColor = nil; 
    addresLbl1.opaque = NO; 
    [cell.contentView addSubview:addresLbl1]; 
    [addresLbl1 release]; 

,但它呈現爲401聖景\ nToronto,安大略省,M5V1K1 \ nCanada 注意,該標籤上的UITableView的細胞增加。 我需要從'\ n'的位置在字符串中的新行,這個字符串將來自服務器,所以'\ n'的位置可能會有所不同

回答

0

你不應該使用雙倍的反斜槓。

\\ is the code used for \, so \\n will be parsed and printed as \n 

所以,你的代碼應該是這樣的:

addresLbl1.text = @"401 King St\nToronto, Ontario, M5V1K1\nCanada"; 
addresLbl1.numberOfLines = 0; 
+0

謝謝@Thomas,它的工作。 – Blios

0

默認情況下,UILabel將其屬性numberoflines設置爲1,這意味着您的文本將在一行中呈現。試圖將其屬性設置爲0,由文檔

此屬性控制線的最大數量,以使用 適合標籤的文本到它的邊界矩形所示。此屬性的默認值 1。要消除任何上限,並根據需要使用盡可能多 線,這個屬性的值設置爲0

如果您使用此屬性限制您的文本,任何文本不在 內符合最大行數並在邊界內 標籤的矩形使用適當的換行符 模式截斷。

當使用sizeToFit方法調整接收器的大小時,調整大小 時會考慮存儲在此屬性中的值。例如,如果 此屬性設置爲3,則sizeToFit方法將調整接收器 的大小,以便它足夠大以顯示三行文本。

+0

感謝您的快速回復,但我需要從「\ n」的字符串位置新線和這個字符串將來自服務器,所以'\ n'的位置可能會有所不同。 – Blios

0

對於多條線路可以使用的UILabel屬性numberOfLines作爲

label.numberOfLines = 3; 

在你的情況你的文字可以只適合在一條線,所以如果你想在多行更好的,你應該定義3個不同的標籤。

+0

我不能,看我的編輯。 – Blios

0

您需要先設置numberOfLines爲0,然後

unichar chr[1] = {'\n'}; 
NSString *singleCR = [NSString stringWithCharacters:(const unichar *)chr length:1]; 
[yourLabel setText:[NSString stringWithFormat:@"new%@line",singleCR]]; 

這將確保你想要的。