【发布时间】:2012-05-11 17:20:41
【问题描述】:
总体思路
我希望在用户滚动列表时动态调整 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。
感谢您的宝贵时间。
【问题讨论】:
-
@jacky 男孩,感谢您的编辑和观察。我删除了一些从未得到回答的问题,并键入了我找到的一些解决方案。我的大部分问题现在都得到了解答,除了我想弄清楚的两个。
标签: iphone ios uitableview real-time