2010-04-28 71 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爲默認值)