0

奇妙な問題に遭遇しました。動的な高さを持つカスタム テーブルビュー セルがあります。これをテストしている間、これはすべて正常に機能しているように見えましたが、実際のコンテンツをロードしているので、いくつかの問題があるようです.

一部のテキストが UILabel の改行をトリガーしないようです

正: http://dl.dropbox.com/u/274185/Screen%20Shot%202012-05-09%20at%201.15.21%20PM.png 誤: http://dl.dropbox.com/u/274185 /Screen%20Shot%202012-05-09%20at%201.15.30%20PM.png

間違った例でわかるように、テキストは 2 行目に押し込まれていますが、ラベルの高さはまだ 1 行しかカウントされていません。

item.project = @"より長いタイトルの別のテスト プロジェクト (管理者 / プロジェクト管理)";

item.project = @"テスト プロジェクト (管理者 / プロジェクト管理)";

高さの計算方法は次のとおりです。

// when creating the cell
cell.projectLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.projectLabel.numberOfLines = 0;
[cell.projectLabel sizeToFit];

// in heightForRowAtIndexPath()
CGSize projectHeight = [item.project sizeWithFont:[UIFont boldSystemFontOfSize:13.0f] constrainedToSize:CGSizeMake(320.0f, CGFLOAT_MAX) lineBreakMode: UILineBreakModeWordWrap];

lineBreakMode を変更してみましたが、あまり役に立たないようです

EDIT:テキストの高さを計算するときに問題があるように見えました.320ポイントの固定を使用しましたが、実際の幅を使用した後、高さが正しく計算されました。

CGSize projectHeight = [item.project sizeWithFont:[UIFont boldSystemFontOfSize:13.0f] constrainedToSize:CGSizeMake(cell.projectLabel.bounds.size.width, CGFLOAT_MAX) lineBreakMode: UILineBreakModeWordWrap];
4

1 に答える 1

1

sizeToFitは、ビューのサイズを小さくするだけだと思います。ラベルのフレームを2行分の高さに設定してから、sizeToFitを呼び出す必要があります。これにより、テキストが1行の場合はラベルが縮小されますが、テキストが2行の場合は高さが維持されます。

于 2012-05-09T05:45:13.213 に答える