私はストーリーボードを使用して iOS 5 プロジェクトに取り組んでいるため、IB で動的テーブル セル プロトタイプを使用しています。ビューの 1 つで、セルの高さがコンテンツの高さから計算された、高さが可変のセルを含むテーブル ビューがあります。
tableView:heightForRowAtIndexPath:
テーブル ビューが最初に表示されたときに、すべてのセルに対して正しい値を返します。いくつかのアイテムを下にスクロールするとすべて問題ありませんが、何かがうまくいかないことがあります。実際のセルは、タッチ領域を含めて正しい高さのように見えますが、セパレーターが間違った場所 (セル間ではなくセル内) にレンダリングされます。
セパレーターの配置を測定すると、セルの再利用がこれと関係があるように見えます。最初の 3 つのセルのセパレータは正しく表示されますが、4 番目のセルは正しく表示されません。heightForRowAtIndexPath:
正しい高さ (この場合は 125 ピクセル) を返し、含まれるサブビューはすべて適切な場所に配置されます。ただし、セパレータは前のセパレータから 108 ピクセルだけレンダリングされ、セルの高さ 125 ピクセルの領域内に配置されます。
キッカーは次のとおりです。108px は最初のテーブル セルの高さで、現在は見えなくなっており、おそらく再利用されています。これについて明確な証拠はありませんが、テーブル ビューはheightForRowAtIndexPath:
これらのセルを無視しており、再利用されたセルの高さに応じてセパレータをレンダリングしているようです。
これは、後の短いセルの束がセパレーターとしてまったくレンダリングされない理由を説明していません。しかし、これは私が続けなければならないすべてです。
回避策、IB 設定、またはその他に役立つものはありますか?