让我们看看我有一个这样的字符串:
NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";
如何使UILabel像这样显示消息
五星级 BBBBB CCCCC
我不认为\n能被UILabel识别,我能在NSString中放入什么东西让UILabel知道它必须在那里创建换行符吗?
让我们看看我有一个这样的字符串:
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"
}
其他回答
如果你使用UILabel,你必须记住默认设置是1行,所以不管你添加了多少换行符(\n或\r),你需要确保它被设置为不止一行,这样它就可以被允许追加更多的行。
另一种选择是使用UITextView,它实际上是用于多行。
你可以在UILabel的XCode属性部分轻松实现这一点,见截图:
//不要忘记将numberolines设置为0
UILabel* locationTitle = [[UILabel alloc] initWithFrame:CGRectMake(5, 30, 230, 40)];
locationTitle.font = [UIFont systemFontOfSize:13.0];
locationTitle.numberOfLines = 0;
locationTitle.text = [NSString stringWithFormat:@"Eaton industries pvt. Ltd \nUK Apr 12"];
[cell addSubview:locationTitle];
我也遇到过同样的问题,下面是我解决问题的方法。希望这对某些人有所帮助。
// Swift 2
lblMultiline.lineBreakMode = .ByWordWrapping // or use NSLineBreakMode.ByWordWrapping
lblMultiline.numberOfLines = 0
/ / objective - c
lblMultiline.lineBreakMode = NSLineBreakByWordWrapping;
lblMultiline.numberOfLines = 0;
// c# (Xamarin.iOS)
lblMultiline.LineBreakMode = UILineBreakMode.WordWrap;
lblMultiline.Lines = 0;
你必须在UILabel上设置numberolines属性。默认值是1,如果您将其设置为0,它将删除所有限制。
在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;