2010-04-28 98 views
28

我有一个很长的文本字符串(包括\n换行符),我输入一个UILabel进行显示。动态设置UILabel为文本提供足够的空间。UILabel文本不会自动换行

我的代码如下所示:

myText = [NSString stringWithFormat:@"%@some text: %@ \n \n %@", myText, moreText1, moreText2]; 
NSLog(@"%@", myText); 
myLabelSize = [vLabelText sizeWithFont:[UIFont fontWithName:@"Helvetica" size:(15.0)] constrainedToSize:cMaxLabelSize lineBreakMode:UILineBreakModeWordWrap]; 

UILabel *lBody = [[UILabel alloc] initWithFrame:CGRectMake(cFromLeft, vFromTop, vLabelSize.width, vLabelSize.height)]; 
lBody.font = [UIFont fontWithName:@"Helvetica" size:(15.0)]; 
lBody.lineBreakMode = UILineBreakModeWordWrap; 
lBody.textAlignment = UITextAlignmentLeft; 
lBody.backgroundColor = [UIColor cyanColor]; 
[myScrollView addSubview:lBody]; 
lBody.text = vLabelText; 

我的问题是,文本不换,但第一行后截断。 \n换行符被忽略。

回答

85

刚刚发现问题,我的numberOfLines仍然是1.将它设置为0后,它工作正常。

+5

拍摄..你打我它...我有这个确切的问题,并知道当我读你的标题,我有你的解决方案。 – 2010-04-28 13:55:33

+0

在这里,有一个upvote。 :) – mtmurdock 2012-02-24 18:26:08

+0

在这里,有一个cookie。 :O – Sandy 2013-06-24 23:40:05

1

可能这将是有用的 - 因为一些线路现在已经过时

lBody.lineBreakMode = NSLineBreakByCharWrapping; 
lBody.textAlignment = NSTextAlignmentLeft; 

,当然还有 - lBody.numberOfLines应大于1(1为默认值)