一般的なアイデア
ユーザーがリストをスクロールするときにUITableViewCellsのサイズを動的に変更することを検討しています。つまり、アイテムがリストの一番下に達するとサイズが大きくなります。
考慮事項
これは、次の呼び出しが行われるときに、1秒間に複数回更新する必要があるプロセスです。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
UITableView::ReloadData
したがって、次のように呼び出しが行われるようにアプローチすることは実用的ではありません。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
これは、大量の余分なデータをリロードし、システムの速度を大幅に低下させる必要があるためです。
ニーズ
- 画面には約10個のアイテムが表示されます。
- 極端な場合、リスト全体に最大100個のアイテムが含まれる場合があります。
- システムはスムーズにスクロールする必要があります。
- リストがスクロールすると、アイテムはリアルタイムでスムーズに拡大および縮小する必要があります。
常識
これは、静的アイテムを含むリストと比較して、パフォーマンスに確実に影響を与えます。
「セルのサイズをテキストの長さに変更する」という単純なケースを扱うスレッドは何百もありますが、これは1秒あたりのサイクル数が多いのに比べて、1回限りのことです。
考えられるアプローチ
- サブクラス
UITableView
。 - 静的
UITableView
にネストしUIScrollView
ます。 - アイテムリストシステムを最初から作成し、まったく使用
UIScrollView
しないでください。
破棄されたアプローチ
- :が呼び出される
UITableView::ReloadData
ように、サイクルごとに呼び出します。heightForRowAtIndexPath
ここのところ
アイテムサイズの計算を計算するモジュールをすでにコーディングしました。
結論
私はこれを解決するための最も速い方法を探していUITableView
ますが、最後の手段として必要に応じて自分で再コーディングします。
御時間ありがとうございます。