首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为UILabel添加换行符?

如何为UILabel添加换行符?
EN

Stack Overflow用户
提问于 2010-02-23 01:52:18
回答 19查看 285.9K关注 0票数 277

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

代码语言:javascript
复制
NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";  

如何才能使UILabel像这样显示消息

AAAAA

BBBBB

CCCCC

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

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2010-02-23 08:50:14

像在字符串中使用的一样使用\n

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

label.numberOfLines = 0;

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

代码语言:javascript
复制
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:

参考,Replacement for deprecated sizeWithFont: in iOS 7?

代码语言:javascript
复制
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);
票数 341
EN

Stack Overflow用户

发布于 2011-01-04 06:49:24

在Interface Builder的小方框中键入时使用option-return插入换行符(\n)。在Interface Builder的Label属性中,设置# Lines = 0。

选择标签,然后将Lines属性更改为0,如上图所示,然后在字符串中使用\n换行。

票数 291
EN

Stack Overflow用户

发布于 2011-01-04 08:29:39

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

这里有一个小技巧来解决这个问题:

代码语言:javascript
复制
// correct next line \n in string from XML file
NSString *myNewLineStr = @"\n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"\\n" withString:myNewLineStr];

myLabel.text = myLabelText;

因此,您必须将字符串中未解析的\n部分替换为硬编码NSString中已解析的\n

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

代码语言:javascript
复制
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读取的字符串进行解析?

希望这能有所帮助。

票数 135
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2312899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档