如何基于UITableView滚动动态调整UITableViewCell的大小?

时间:2013-05-19 22:15:52

标签: ios objective-c dynamic uitableview resize

我试过寻找这个问题的答案,但到目前为止我还没有运气。

上下文

我在标准的UIViewController(不是UITableViewController ..)中有一个UITableView。我已经将UITableViewCell子类化,并且tableview中的所有单元格都来自同一个类。

要求

我想找到一种基于滚动查看窗口来调整单元格大小的有效方法。例如,当单元格位于可见列表的底部时,高度为X.当单元格在屏幕上向上移动时,其高度应按比例增加到2倍。

其他信息

我接近于放弃UITableView方式并开始创建我自己的控件,通过子类化UIScrollView来实现这样的壮举。但是,我想看看在走这条路之前是否可行。我确实看到了一些非常有趣的SO帖子,但没有什么可以让我走上正确的道路。

任何提示或帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

您需要响应滚动视图委托方法scrollViewDidScroll:并实现它以记录表视图顶部的单元格并重新加载表视图。然后,您的表视图委托方法tableView:heightForRowAtIndexPath:通过索引路径和顶部单元索引路径之间的关系设置单元格高度。

您的主要问题是在重新加载表格视图时的性能。

如果你想推出自己的解决方案,那么它仍然符合上述描述,但是你可以比表格视图更有效,因为表格视图会调用tableView:heightForRowAtIndexPath:方法一次对于每次重新加载的每一行,以便计算表格内容的总高度。