0

20,000 語などの大きなコンテンツを含む UILabel を設定すると、問題が発生します。そして、このメソッドで 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];

これを試して font を調整してください。行番号も調整します。それは私が望むあなたの問題を修正するかもしれません

于 2012-08-03T02:18:30.193 に答える