2012-08-03 54 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的

計算