2012-08-03 55 views
0

当我设置一个带有大量内容(如20,000字)的UILabel时,遇到问题。我用这种方法计算的UILabel的大小:当有大量文本内容时,uilabel崩溃

CGSize labelSize = [myLabel.text sizeWithFont:myLabel.text.font 
                  constrainedToSize:CGSizeMake(400, CGFLOAT_MAX) 
                   lineBreakMode:UILineBreakModeWordWrap]; 

它始终显示标签时崩溃。

我不知道为什么,但我用UITextView替换它并解决了问题。

有没有人知道这个的任何原因?谢谢!

回答

0
float desiredHeight = 50.0; 
NSString *yourText = @\"This is some\nmultiline text\nthat you want to fit in your frame.\"; 
CGRect frame = CGRectMake(30.0, 30.0, 250.0, desiredHeight); 
int originalFontSize = 30; // let's say 
UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
label.font = [UIFont boldSystemFontOfSize:originalFontSize]; 

frame.size.height = 3000.0; // just make sure it's big enough 
CGSize result = [yourText sizeWithFont:label.font constrainedToSize:frame.size lineBreakMode:UILineBreakModeWordWrap]; 
int newFontSize = (desiredHeight/result.height) * (float)originalFontSize; 
label.font = [UIFont boldSystemFontOfSize:newFontSize]; 
label.numberOfLines = 0; 

label.text = yourText; 

[self.view addSubview:label]; 

试试这个,调整字体。还要调整行号。它可以纠正乌尔问题,我希望

0

也许更好做这样的事情:

UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0.0, 0.0, self.view.frame.size.width, 0.0)]; 
[label setText: @"your text"]; 
[label sizeToFit]; 

CGRect labelFrame = label.frame; 
labelFrame.size.height = label.contentSize.height; 
label.frame   = labelFrame; 

[self.view addSubview: label]; 

现在,您可以添加文字和它的高度将通过Xcode的

计算