如何为UILabel添加换行符?

让我看看我有一个字符串看起来像这样:

NSString *longStr = @"AAAAAnBBBBBnCCCCC";  

我如何做到这一点,以便UILabel像这样显示消息

AAAAA
BBBBB
CCCCC

我不认为n被UILabel识别,那么有什么我可以放在NSString中的,以便UILabel知道它必须在那里创建一个换行符?


正如您在字符串中使用的那样使用n

将numberOfLines设置为0以允许任意数量的行。

label.numberOfLines = 0;

使用sizeWithFont:来更新标签框架以匹配文本的大小。 如果你不这样做,你的文本将被垂直居中或切断。

UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
                          constrainedToSize:label.frame.size
                              lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);

更新:替换为弃用

sizeWithFont:constrainedToSize:lineBreakMode:

参考,替换为不推荐的sizeWithFont:在iOS 7中?

CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];

label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);

在这里输入图像描述

在Interface Builder的小方框中输入以插入换行符( n)时使用选项返回。 在Interface Builder的标签属性中,设置#Lines = 0。

选择标签,然后像上图中那样将Lines属性更改为0,然后在字符串中使用 n作为换行符。


如果您从XML文件读取字符串,则此字符串中的换行符nUILabel文本中不起作用。 n未被解析为换行符。

这是解决这个问题的一个小技巧:

// correct next line n in string from XML file
NSString *myNewLineStr = @"n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"n" withString:myNewLineStr];

myLabel.text = myLabelText;

所以你必须在硬编码的NSString中用解析的n替换字符串中未解析的n部分。

以下是我的其他标签设置:

myLabel.numberOfLines = 0;
myLabel.backgroundColor = [UIColor lightGrayColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentCenter;

最重要的是将numberOfLines设置为0 (=标签中的行数不限)。

不知道为什么苹果选择不解析n从XML字符串读?

希望这可以帮助。

链接地址: http://www.djcxy.com/p/4833.html

上一篇: How to add line break for UILabel?

下一篇: line text to a UIButton?