-1

いくつかのセルを含むテーブルビューがあります。セルを埋めるテキストは予測できません(APIリクエストの結果に基づく)。私がやりたいのは、セルのテキストがセルに対して長すぎるかどうかに基づいてセルの高さを調整することです(たとえば、セルがテキストに「...」を追加します)。

そうすれば、結果/テキストが何であれ、テーブルビューセルに表示されるものは常に完全に表示されます。

heightForRowAtIndexPathを実装するには多くのコードを実装する必要があるため、実装しないことをお勧めします。

アップデート:

「そうするためのコードがたくさんある」とは、文字通り、リクエストを解析し、条件をチェックしてアルゴリズムを実行するコードがたくさんあることを意味します。さらに、テーブルビューもたくさんあります。そのようなものを別の方法に移して、Imをオフにします!

これをデモするリソースを教えていただけますか?これを行う方法を知っていますか?

4

2 に答える 2

3

テーブルの行の高さを変更するには、heightForRowAtIndexPathを実装する必要がありますが、高さを計算するために必要なコードは必ずしも多くありません。

NSString:sizeWithFont:constrainedToSizeを使用して、必要なセルサイズを計算します。

    //szMaxCell contains the width of your table cell, and the maximum height you want to allow
// strCellContents is an NSString containing the text to display

        CGSize szMaxCell = CGSizeMake (tableView.frame.size.width - 20,999);
        UIFont *font = [UIFont systemFontOfSize:12];    // whatever font you're using to display
        CGSize szCell = [strCellContents sizeWithFont:font constrainedToSize:szMaxCell lineBreakMode:UILineBreakModeWordWrap];

szCellには、ラベルのサイズが含まれています。このサイズを使用して、cellForRowAtIndexPathとheightForRowAtIndexPathの両方でUILabelのフレームを計算します。

于 2012-10-26T12:10:06.647 に答える
1

を使用しheightForRowAtIndexPathます。余分なコードがたくさんあるべきではありません。セルに入力しているオブジェクトへの参照を取得し、そのテキスト値の長さを確認して、必要な高さを返します。それがまさにそのデリゲートメソッドが設計されている目的です。

于 2012-10-26T12:10:51.917 に答える