在iOS5中多行渲染UILabel?

时间:2012-10-19 11:51:15

标签: objective-c ios5 uilabel

我正在尝试将我的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 个答案:

答案 0 :(得分:0)

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

所示
  

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

     

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

     

使用sizeToFit方法调整接收器大小时,请调整大小   考虑存储在此属性中的值。例如,如果   此属性设置为3,sizeToFit方法调整接收器的大小   所以它足够大,可以显示三行文字。

答案 1 :(得分:0)

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

label.numberOfLines = 3;

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

答案 2 :(得分:0)

您需要先将numberOfLines设置为0,然后再设置

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

这将确保你想要的东西。

答案 3 :(得分: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;