当部分不可见时,UITableViewCell 的 rectForSection 返回估计值

ste*_*rab 5 objective-c uitableview ios ios8

我目前正在尝试向 a 添加无限滚动UITableView,其中包含许多日历事件。由于事件标题并不总是适合单行,因此我UILabel在单元格中添加了多行。为了计算单元格的高度,我UITableView通过 iOS 8 中的自动布局利用了新的自调整单元格大小。WWDC Session 226 更详细地讨论了这一点。

为了实现无限滚动机制,我重写了layoutSubviews需要计算给定时间在屏幕上不可见的部分的高度的位置。这可以通过使用来完成[self rectForSection:0]。这样做时,表根据估计的行大小返回一个高度,我必须在表的初始化程序内定义,以便使自动调整大小的单元格工作。

self.estimatedRowHeight = 44.0;
self.rowHeight = UITableViewAutomaticDimension;
Run Code Online (Sandbox Code Playgroud)

当该部分出现在屏幕上时,我得到了该部分的正确大小,但由于我必须根据该特定部分的计算高度来更新表格的 contentOffset,这会导致我的表格上下跳跃。

关于如何解决这个问题有什么想法吗?有没有办法强制部分返回实际高度而不是估计高度?