1

カスタムUIビューを持つカスタムテーブルセルがあります。サーバーからのデータに依存するため、セルの高さは動的です。データを取得したら、テーブルに表示されるようにセル フレームのサイズを変更します。

しかし、セルの高さを変更してセル フレームのサイズを変更すると、セルの内容が適切にサイズ変更されません。内部ビューのサイズ変更マスクを適切に設定しましたが、セル フレームを変更してテーブル ビューの heightForRowIndexPath デリゲート メソッドでセルの高さを変更すると、内部ビューのサイズが変更されません。

ここで見つけた回避策は、セルに新しいフレームを設定したら、すべてのサブビューのサイズ変更を行う内部コンテナー ビューに同じフレームを設定することです。

セルのサイズ変更で何が問題になるのかを知る必要があります。

前もって感謝します

ありがとう、ナビーン

4

2 に答える 2

3

サブビューがセルに追加された場合、 で問題なくcontentView動作するはずlayoutSubviewsです。[super layoutSubviews];ただし、サブビューをレイアウトする前に呼び出すことを忘れないでください。これにより、セルのサイズがcontentView正しく変更されます。

于 2014-05-27T16:49:38.670 に答える
3

すべてのビューには autoresizedSubviews というプロパティがあり、自動サイズ変更を有効にします。つまり、UITableView セルが意味することは、そのサブビューのサイズが変更されるということです。ただし、UITableViewCell の「contentView」プロパティはサブビューではなく、セルによって管理されるビューです。セルへのフレームの変更が contentView に反映されるのは論理的に思えますが、そうではありません。セルと contentView の両方で autoresizedSubviews が設定されていること、およびセル フレームの変更が contentView に影響しないことを確認するために、独自の tableView プロジェクトを変更しました。

私の経験では、backgroundView (存在する場合) と contentView の両方がサブビューではなく「管理」されているため、フレームの高さはセルの表示方法に影響しません。heightForRowAtIndexPath: に使用することさえできません。そのコールバックは、セルが作成される前に呼び出されるためです (そのメソッド内で取得して使用しようとすると、アプリがクラッシュします)。

于 2012-07-15T14:35:41.880 に答える