0

tableView:cellForRowAtIndexPathメソッド内からtableViewセルの高さを取得する必要があります。

たとえば、行の高さをtableView:heightForRowAtIndexPath200を返すように設定しました。ただし、tableView:cellForRowAtIndexPathでは、NSLog(@"cell height: %f", cell.contentView.frame.size.height);200を取得しない場合、デフォルトのセルの高さ44.0を取得します。ただし、セルのサイズはシミュレーターで視覚的に正しいです。heightForRowAtIndexPath別の変数に保存しなくても、で指定されたサイズを直接取得する方法が必要です-いいえ?

4

2 に答える 2

1

tableView:heightForRowAtIndexPath:、テーブルビューの各セルの垂直位置、スクロールインジケーターのサイズなどを決定するためにのみ、テーブルビューで使用されます。

ただし、NIB /ストーリーボードファイルでセルを設定するか、正しい高さでセルを定義することtableView:cellForRowAtIndexPath:により、同じ高さのセルを作成する必要があります。frame

これらの2つの方法は独立しています。セルがの高さで作成されるという魔法はありません tableView:heightForRowAtIndexPath:。より大きなセルを作成すると、このセルはテーブルビューの次のセルとちょうど重なります。

したがって、独自のメソッドを呼び出すことができますtableView:heightForRowAtIndexPath:(そして、@ Larcus94がまさにこれを提案していることがわかります)。

ただし、テーブル内のすべてのセルの高さが同じである場合は、別の定数の方が効果的です。

于 2012-08-30T18:35:11.163 に答える
1

内で呼び出すことができますtableView:cellForRowAtIndexPath

次に例を示します。

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   CGFloat cellHeight = [self tableView:self.tableView heightForRowAtIndexPath:indexPath];
}
于 2012-08-30T18:25:21.230 に答える