0

たとえば、tableViewには100行ありheightForRowAtIndexPath:、100行目が表示される前にすでに実行されています。

なんで?contentSizetableViewを計算するには?

ありがとう!

4

1 に答える 1

3

Appleのドキュメントから:

テーブルビューが表示されるたびに、各行のデリゲートでtableView:heightForRowAtIndexPath:が呼び出されます。

そうです、セルを表示する前に呼び出されます。あなたがそれについて考えるならば、テーブルがそれを逆にした場合、それは標準の高さのセルを作成し、それにコンテンツを入れ、実際の高さを取得し、セルのサイズを変更/シフトします。それは本当にいいことではないでしょう。

これによりパフォーマンスの問題が発生する可能性があるため、高さが異なるセルがある場合にのみ使用してください。

このメソッドを使用すると、デリゲートはさまざまな高さの行を指定できます。このメソッドが実装されている場合、返される値は、指定された行のUITableViewのrowHeightプロパティに指定された値をオーバーライドします。

tableView:heightForRowAtIndexPath:rowHeightプロパティの代わりに使用すると、パフォーマンスに影響があります。テーブルビューが表示されるtableView:heightForRowAtIndexPath:たびに、各行のデリゲートが呼び出されます。これにより、多数の行(約1000以上)を持つテーブルビューで重大なパフォーマンスの問題が発生する可能性があります。

それ以外の場合、すべてのセルが同じ高さである場合は、rowHeightプロパティを使用し、を実装しないでくださいtableView:heightForRowAtIndexPath:

于 2012-09-04T11:49:13.430 に答える