0

スクロール ビューにラベルとその他のアイテムがあります。-viewDidLoad では、ラベルにテキストを設定し、すべてのテキストが収まるようにラベルの高さを増やしたいと考えています。そのため、非常に大きな高さの制約であるラベルの既存の幅に制約されたテキストのサイズを計算します。

ただし、計算される高さが小さすぎて、テキストが折り返されています。iOS4.3、iOS5.0、および iOS6.0 の iPad シミュレーターでこれを試しましたが、それらすべてで正しく動作しません。

何か案が?

self.labelTextDescription.text = self.purchase.textDescription;
self.labelTextDescription.backgroundColor = [UIColor redColor];

CGSize allowedSize = self.labelTextDescription.frame.size;
allowedSize.height = 100000;

CGSize textSize = [self.labelTextDescription.text sizeWithFont:self.labelTextDescription.font constrainedToSize:allowedSize lineBreakMode:UILineBreakModeWordWrap];
4

1 に答える 1

-1

UILabel の行数はデフォルトで 1 です。自分で計算することも、David Rönnqvist が指摘したように 0 (より簡単) を使用することもできます。しかし、あなたのコード自体は間違っていません。

おそらく、この小さなコード スニペットが正しい方向を示してくれるでしょう。

UILabel *label = [[UILabel alloc] init];
label.text = @"Lorem ipsum dolor sit amet.";

CGSize allowedSize = CGSizeMake(100, MAXFLOAT);
CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:allowedSize lineBreakMode:UILineBreakModeWordWrap];

label.frame = CGRectMake(0, 0, textSize.width, textSize.height);
label.numberOfLines = 0; //EDIT: If you want to calculate it yourself use ceilf(textSize.height / label.font.lineHeight);
[self.view addSubview:label];
于 2012-10-25T08:07:09.880 に答える