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

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

如何使UILabel像这样显示消息

五星级 BBBBB CCCCC

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


当前回答

在Xcode 6中,当使用换行时,你甚至可以在字符串中使用\n。它会起作用的。例如:

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, screenRect.size.width, 50)];
label.textAlignment = NSTextAlignmentCenter;
label.text = @"This will be on the first line\nfollowed by a line under it.";
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;

其他回答

在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"
 }

对于那些想要一个简单的解决方案的人,请在Interface Builder中的文本标签输入框中执行以下操作:

确保你的行数设置为0。

Alt + Enter

(Alt是你的选项键)

干杯!

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

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

就像这样做

NSString * strCheck = @"A\nB";

strCheck = [strCheck stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];  //This is to prevent for fetching string from plist or data structure

label.numberOfLines = 0;

label.lineBreakMode = NSLineBreakByWordWrapping;

label.text = strCheck;

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