【发布时间】:2018-06-04 09:16:13
【问题描述】:
我正在尝试创建一个类似聊天机器人的应用程序,我使用了带有自定义单元格的 UITableView 来满足我的需求。每当添加新消息时,我都会创建并插入一个新行,然后滚动到UITableView 的底部。一切正常,直到某一点,但是当单元格的高度发生变化时(我有两种不同类型的单元格),动画很混乱,它不能平滑滚动到最后并且整个UITableView 闪烁,这是不是很好的用户体验。我尝试了几种方法:
1 - 将数据添加到数据源数组并重新加载UITableView,然后滚动到底部。
2 - 使用 insertRowsAtIndexPaths 然后滚动到底部。
他们都有滚动的相同问题。我已经使用scrollToRowAtIndexPath 到达了UITableView 的底部
我已经上传了一个演示应用程序的代码,它代表模拟相同的问题here,所以它很容易理解。 Here 是该问题的视频。非常感谢任何帮助。
此问题可能不会出现在模拟器上,请在设备上运行演示项目。
在阅读了所有的 cmets 并在聊天中进行讨论后,我注意到 iPhone 5C (10.3.3) 上发生了这种情况。我在 iPhone 5S (11.3) 上运行了演示,没有出现问题。不确定这是否与操作系统有关。
【问题讨论】:
-
第一种方法行不通,但第二种方法肯定行得通。我检查了您共享的代码,第二种方法运行良好。
-
不,它没有。如果您使用模拟器,我建议您在设备上运行它。该问题不会出现在模拟器上。
-
我在 iPhone X 上检查过。让我在其他设备上试试。您使用的是哪种设备?
-
iPhone SE,让我也看看 iPhone 6S。
-
试着找出你的代码大部分时间都花在了哪里。然后你可以努力提高速度。您可以为此使用 Instruments(Xcode 中的 Command-I)。
标签: ios objective-c uitableview uiscrollview