2

自動レイアウト機能を使用してコードに追加されたカスタム UITableViewCell のサブビュー (検証済み)。ただし、これを行うことの全体的なポイントは、各テーブルビュー セルの高さを計算する必要がなく、デリゲート メソッド heightForRowAtIndexPath がテーブルビューの描画中に高さを期待することでした。

自動レイアウトを使用してコンテンツに基づいてこの高さを把握するにはどうすればよいですか?

また、私は実際にはバックグラウンド スレッドでこれを行うことはできません (またはできますか?) ため、たとえば 1000 レコードのリストに裏打ちされたこれを使用する UITableView がある場合、これには永遠に時間がかかります。そうですか?

4

1 に答える 1

1

この場合の自動レイアウトは、各セル内のサブビューのフレーム サイズを計算する必要がないことを意味します。heightForRowAtIndexPath メソッドとは関係ありません。これは、セルのフレームを定義するためにテーブル ビューによって使用され、サブビューのレイアウトを通知します。

Autolayout を使用して高さを決定すると、かなり遅くなる可能性が高く、バックグラウンド スレッドでは実行できません。1000行ある場合は、スクロールするのがかなり面倒になるため、単一のテーブルではなく階層構造を検討します。データを設定または作成する時点で高さを計算することも検討できます。

制約を使用してオフスクリーン ビューを設定し、各アイテムのデータを入力してから、高さを記録してキャッシュすることができる場合があります。ただし、これは非常に遅いため、height メソッドではなくデータの最後で行う必要があります。

于 2013-02-15T20:48:04.117 に答える