0

我正在尝试将我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 King St\nToronto, Ontario, M5V1K1\nCanada 请注意,此标签已添加到UITableView的单元格上。我需要从字符串中 '\n' 的位置换行,这个字符串将来自服务器,所以 '\n' 的位置可能会有所不同

4

4 回答 4

0

you need to first set numberOfLines to 0, and then

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

this will ensure what you wanted.

于 2012-10-19T12:05:48.827 回答
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;
于 2012-10-19T12:11:36.923 回答
0

默认情况下,UILabel 将其属性 numberoflines 设置为 1,这意味着您的文本将在一行中呈现。尝试将该属性设置为 0,如文档所示

此属性控制要使用的最大行数,以使标签的文本适合其边界矩形。此属性的默认值为 1。要删除任何最大限​​制并根据需要使用尽可能多的行,请将此属性的值设置为 0。

如果使用此属性限制文本,则任何不适合最大行数和标签边界矩形内的文本都将使用适当的换行模式截断。

当使用 sizeToFit 方法调整接收器的大小时,调整大小会考虑存储在此属性中的值。例如,如果此属性设置为 3,则 sizeToFit 方法会调整接收器的大小,使其大到足以显示三行文本。

于 2012-10-19T11:57:28.470 回答
0

对于多行,您可以使用 UILabel 属性numberOfLines作为

label.numberOfLines = 3;

在您的情况下,您的文本只能放在一行中,所以如果您希望它在多行中更好,您应该定义 3 个不同的标签。

于 2012-10-19T11:58:51.307 回答