让我们看看我有一个这样的字符串:

NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";  

如何使UILabel像这样显示消息

五星级 BBBBB CCCCC

我不认为\n能被UILabel识别,我能在NSString中放入什么东西让UILabel知道它必须在那里创建换行符吗?


当前回答

在Swift 2.2, > iOS 8

我在Storyboard的属性检查器下设置Lines = 0,并将引用出口链接到标签。然后在控制器中像这样使用:

 @IBOutlet weak var listLabel: UILabel!

 override func viewDidLoad() {
      ...
      listLabel.text = "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nLine 8"
 }

其他回答

只是使用标签。numberolines = 0;

重要的是要注意它是\n(反斜杠)而不是/n。

textLabel.text = @"\nAAAAA\nBBBBB\nCCCCC";
textLabel.numberOfLines = 3; \\As you want - AAAAA\nBBBBB\nCCCCC
textLabel.lineBreakMode = UILineBreakModeWordWrap;
NSLog(@"The textLabel text is - %@",textLabel.text);

在接口构建器中,可以使用Ctrl + Enter将/n插入到所需位置。 这种方式可以实现以下情况

aaaaaaaaaa

如果从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;

最重要的是将numberolines设置为0 (= label中的行数无限制)。

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