我有一个具有不同项目高度的 UITableView。 在开始时,用户应该看到最后的项目(在列表的末尾)并且应该能够手动滚动到顶部。
为了到达列表的末尾,我在调用 [tableView reloadData]
之后在主线程上使用了 [tableView scrollToRowAtIndexPath:lastIndexPath atScrollPositionBottom animated:NO]
后台进程。
为了加快速度并达到真正的目的,我使用 estimatedHeightForRowAtIndexPath
并返回前 8 个项目 (CGFloat)500
和其他项目 (CGFloat )100
。
使用 estimatedHeightForRowAtIndexPath
可避免为列表中的每个项目调用 heightForRowAtIndexPath
(它可能是一个很长的列表)。
在 iOS 8(iPhone 4S、5S、6)上一切正常,但在 iOS 7(iPhone 4S)上,只有 heightForRowAtIndexPath
被调用,而不是 cellForRowAtIndexPath
,所以有在我开始滚动之前没有显示任何项目。
为每个 estimatedHeightForRowAtIndexPath
返回 (CGFloat)100
- 调用避免了这种情况,但它不会滚动到列表的实际末尾并与 iOS 8 iPhone 4S 版本相匹配很慢。
有什么建议吗?
最佳答案
好吧,您可以在向下滚动后简单地重新加载可见单元格....
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
withRowAnimation:UITableViewRowAnimationNone];
关于ios - 具有不同项目高度的自下而上的 UITableView 滚动到结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27044025/