大概的概念
我希望在用户滚动列表时动态调整 UITableViewCells 的大小,也就是说,当项目到达列表底部时,它们的大小会变大。
注意事项
这是一个需要在调用时每秒刷新多次的过程:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
因此,采用这种UITableView::ReloadData
方法来调用以下方法是不切实际的:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
因为这将需要重新加载大量额外数据并极大地降低系统速度。
需求
- 我将在屏幕上显示大约 10 个项目。
- 整个列表可能有多达 100 个极端案例的项目。
- 系统需要平滑滚动。
- 项目需要随着列表滚动而实时平滑地扩展和收缩。
常识
与包含静态项目的列表相比,这肯定会对性能产生一些影响。
有数百个线程处理“将 cel 调整为文本长度”的简单情况,这不是我需要的,因为与每秒很多周期相比,这是一次性的事情。
可能的方法
- 子类
UITableView
。 - 有一个静态
UITableView
嵌套在UIScrollView
. - 从头开始创建一个项目列表系统,根本不使用
UIScrollView
。
废弃的方法
- 每个周期调用
UITableView::ReloadData
一次,以便heightForRowAtIndexPath
: 被调用。
至今
我已经编写了一个模块来计算项目大小的数学。
结论
我正在寻找解决这个问题的最快方法,但UITableView
如果需要,我会在万不得已时重新编写自己的代码。
谢谢你的时间。