0

当我设置一个内容很大的 UILabel 时,我遇到了一个问题,比如 20,000 字。我通过这种方法计算 UILabel 的大小:

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

显示标签时总是崩溃。

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

有谁知道这是什么原因?谢谢!

4

2 回答 2

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 计算

于 2013-05-20T06:38:44.307 回答
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];

试试这个并调整字体。还要调整行号。我希望它可以解决你的问题

于 2012-08-03T02:18:30.193 回答