3

特定のアイテムの詳細を一覧表示する UITableView があります。一部の詳細は、正しく表示するために複数の行が必要です。

このコードを使用して、セルのサイズを動的に変更しています。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == 1) return 320;

    CGSize maxSize = CGSizeMake(280, MAXFLOAT);
    CGSize cellSize = [[[appDelegate.callList objectAtIndex:callID] objectAtIndex:indexPath.row+1]
                       sizeWithFont:[UIFont systemFontOfSize:17]
                       constrainedToSize:maxSize
                       lineBreakMode:NSLineBreakByWordWrapping];
    return cellSize.height+10;
}

Right Detail スタイルのセルです。他には何もありません。詳細テキストラベルはサイズ 17 のフォントです。

このコードを使用して、下のセルを切り取ったセルを取得します。

エラー

もちろん、最後に +10 を増やすだけでよいことはわかっていますが、そうすると、細胞が大きすぎて好みに合わなくなります。

どんな助けでも大歓迎です!

編集

問題が見つかりました。maxSize に設定された幅が大きすぎました。

以前に手動で入力せずに現在の詳細ラベルを見つける方法はありますか?

4

2 に答える 2

-1

使用できます

CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"これはラップする長い文字列です";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
    ConstrainedToSize:最大サイズ
    lineBreakMode:self.myLabel.lineBreakMode];

指定された NSString の表示サイズを計算します。したがって、上記のコードに従ってセルの高さを変更できます。また、一部のセルの高さが変更された後、テーブルビューをリロードする必要があります。

于 2013-07-31T04:01:17.743 に答える