gpt4 book ai didi

ios - 没有为每个单元格调用 heightForRowAtIndexPath

转载 作者:行者123 更新时间:2023-11-29 00:11:00 27 4
gpt4 key购买 nike

我正在我的应用中实现聊天功能,并且我正在滚动自己的 UIViewController 来实现此功能。我使用 UITableView 而不是 UICollectionView,因为它更适合我的需求。

我的一些消息是基于文本的(可以是多行),其中一些是基于图像的。我还设置了一些单元格来显示页眉(时间戳信息)和页脚(“正在发送...”、“已交付”等)。

当我构建数据源时,我会计算每个单元格所需的高度,并在我的 tableView:heightForRowAtIndexPath: 方法中返回该数据。

我试图更好地控制这个过程,因为当我希望 UITableView 将大部分时间花在底部时,使用自动布局自动调整单元格大小的效果并不理想,而不是在顶部。

所以,我有以下需求:

  • 当 View 加载时,它应该开始完全滚动到底部
  • 此时,应正确计算 UITableViewcontentSize
  • UITableView 底部插入新单元格应该可以很好地工作,并且动画效果也很好。

我发现的问题是,只有部分单元格的高度由 heightForRowAtIndexPath: 检查。

例如,这是一个特殊情况:

  • 我有 100 条消息 + 32 个页眉/页脚单元格(总共 132 个单元格)
  • viewWillAppear: (或 viewDidAppear:,这似乎并不重要)中,我称之为:
int lastRow           = (int)(self.dataSource.count - 1);
NSIndexPath *lastPath = [NSIndexPath indexPathForRow:lastRow inSection:0];
[self.tableView scrollToRowAtIndexPath:lastPath
atScrollPosition:UITableViewScrollPositionBottom
animated:animated];

animated 变量是YES 还是NO 都没有太大变化。 YES 似乎又调用了几次,但它们实际上只调用了我数据源顶部和底部(开始/结束)的值。这意味着我计算的内容高度(正确)不符合 self.tableView.contentSize.height

但是,如果我手动向上滚动所有单元格,所有内容都会得到整理,UITableView 最终与我计算出的高度对齐。

除了需要滚动到底部的初始 View 之外,我还希望能够将新消息添加到 UITableView 底部的新单元格中,然后将它们动画化到 View 中。如果我让 UITableView 管理它的内容大小和它自己的动画,那真的不能很好地工作。

根据 Apple 的文档,我希望它为每个单元格调用 heightForRowAtIndexPath:。我是从 here 得到的:

There are performance implications to using tableView:heightForRowAtIndexPath: instead of the rowHeight property. Every time a table view is displayed, it calls tableView:heightForRowAtIndexPath: on the delegate for each of its rows, which can result in a significant performance problem with table views having a large number of rows (approximately 1000 or more). See also tableView:estimatedHeightForRowAtIndexPath:.

所以,我的基本问题是如何强制 UITableView 让我设置所有这些值。我在 UITableViewCell 实例本身中使用自动布局,但我想控制单元格大小,而不是让 UITableView 来做。有什么建议吗?

最佳答案

只需添加tableView.estimatedRowHeight = 0即可解决问题。

关于ios - 没有为每个单元格调用 heightForRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46475577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com