2

複数行の折り返しテキストを含む UITableViewCell の高さを計算する必要があります。これまでのところ、これを行う 100% 正確な方法を見つけることができませんでした。さらに、私が現在使用している手法は、固定値に大きく依存しています。

NSString *cellText;    
cellText = @"Very long multi line text in this String ...";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:14.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
return labelSize.height + 32;

次の数行だけで使用される固定値:

  • フォントサイズ (14)
  • フォントの種類 (Helvetica)
  • CGサイズ、幅(280.0f)
  • 私が見つけたランダムなパディング値が必要です (32)

これらすべての固定値が取得され、動的に計算されるようにこれを書き直す良い方法はありますか?

これは、レイアウトの応答性を高め、コードを再利用可能にするのに大いに役立ちます。ベストプラクティスに感謝します。

4

1 に答える 1

1

あなたのコードは良さそうですが、セルの適切な計算を見逃していました.セル(parentView)にラベルの一番上の位置とラベルの一番下の位置を追加する必要があります。

このように計算するだけです

 return labelSize.height + 2*yourLabelInCell.frame.origin.y  //here label's topmost postion and label's bottommost postion in cell added

ラベルはセル内で適切に調整されます。

于 2012-10-22T05:53:52.597 に答える