让我们看看我有一个字符串,看起来像这样:
NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";
如何才能使UILabel像这样显示消息
AAAAA
BBBBB
CCCCC
我不认为UILabel能够识别\n
,所以有没有什么我可以放在NSString中的东西,以便UILabel知道它必须在那里创建一个换行符?
发布于 2010-02-23 08:50:14
像在字符串中使用的一样使用\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:
参考,Replacement for deprecated sizeWithFont: in 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);
发布于 2011-01-04 06:49:24
在Interface Builder的小方框中键入时使用option-return插入换行符(\n)。在Interface Builder的Label属性中,设置# Lines = 0。
选择标签,然后将Lines属性更改为0,如上图所示,然后在字符串中使用\n换行。
发布于 2011-01-04 08:29:39
如果从XML文件中读取字符串,则此字符串中的换行符\n
在UILabel
文本中将不起作用。\n
不会被解析为换行符。
这里有一个小技巧来解决这个问题:
// correct next line \n in string from XML file
NSString *myNewLineStr = @"\n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"\\n" withString:myNewLineStr];
myLabel.text = myLabelText;
因此,您必须将字符串中未解析的\n
部分替换为硬编码NSString
中已解析的\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
读取的字符串进行解析?
希望这能有所帮助。
https://stackoverflow.com/questions/2312899
复制相似问题