一般理念
我希望在用户滚动列表时动态调整UITableViewCells的大小,比如说,当项目到达列表底部时,项目的大小会增加。
考虑
这是一个需要每秒刷新多次的过程,因为要调用:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
因此采用UITableView::ReloadData
方法进行调用是不切实际的:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
因为这将需要重新加载一堆额外数据并极大地减慢系统速度。
需要
常识
与静态项目列表相比,这肯定会产生一些性能影响。
有数百个线程处理“调整cel到文本长度”的简单情况,这不是我需要的,因为这是一次性事情,而且每秒有很多周期。
可能的方法
UITableView
。UITableView
嵌套静态UIScrollView
。UIScrollView
。弃用方法
UITableView::ReloadData
,以便调用heightForRowAtIndexPath
:. 到目前为止
我已经编写了一个计算项目大小的数学模块。
结论
我正在寻找解决此问题的最快方法,但如果需要,我会重新编写自己的UITableView
作为最后的手段。
感谢您的时间。
答案 0 :(得分:2)
经过UITableView
的大量测试后,我还没有找到一种有效的方法。似乎UITableView
可能以不允许动态单元格大小调整的方式进行优化。因此,制作自定义列表系统似乎是唯一的选择。我已经开始在UIScrollView
之上建立这样的项目。
基本功能的很大一部分已经完成,但项目目前处于暂停状态,因为我现在有一个更重要的系统需要开发。如果您有兴趣参与这个项目,请告诉我。
答案 1 :(得分:0)
也许在uitableview委托数据表中查看tableView:willDisplayCell:forRowAtIndexPath。
我遇到了类似的问题,我需要首先加载表格单元格,然后在加载或重新加载表格后对每个单元格执行不同的操作,可能就是您要查找的内容。
干杯
答案 2 :(得分:0)
您无需调用 - [UITableView reloadData]来更新单元格的几何图形。您可以通过调用:
使UITableView重新计算单元格的几何// force geometry update
[tableView beginUpdates];
[tableView endUpdates];
中提到了这一点