gpt4 book ai didi

ios - UICollectionView insertItemsAtIndexPaths : seems to reload collectionview or autoscrolls to top

转载 作者:搜寻专家 更新时间:2023-11-01 06:23:38 26 4
gpt4 key购买 nike

我将 UICollectionViewNSFetchedResultsController 结合使用。当我获取新数据时,我将它们放入 SQLite 数据库中,然后我的 frc 收到一个通知,它会更新。我实现了适当的委托(delegate)方法并在批量更新中插入新数据,之后我不调用 reloadData。但是一旦插入数据, Collection View 就会滚动到顶部(以使新项目可见?)。我想干预这个过程并模仿 Facebook/9Gag 实现。当有新数据时,一个按钮会淡入,让用户滚动到顶部。在显示按钮时,新项目已经插入,因此用户也可以自己向上滚动。我尝试了以下方法:

  • 连接到 UIScrollViewDelegate 方法以查看我是否可以阻止 collectionView 滚动(在此更新过程中没有调用任何方法)
  • 在 frc willUpdate 时显示“滚动以显示更多”按钮,并在按下按钮时插入项目。问题是用户不能自己向上滚动
  • 在插入项目之前,我计算插入后当前可见项目的 indexPath(添加插入项目的数量),并在批量更新的完成 block 中滚动到没有动画的索引。这只有在我延迟滚动时才有效,但随后它会闪烁,因为它首先向上滚动了一点

最佳答案

我通过调用“insertItemAtIndexPaths”将数据递增到我的 collectionView 中试验了同样的问题。

我注意到两件事:- 如果您在当前可见索引路径之后添加项目,则不会自动滚动- 如果您在当前可见索引路径之前添加项目,则不会像您所说的那样自动滚动,但 contentOffset 保持在同一位置,但具有不同的 contentSize,因为您刚刚添加了新项目。

为了处理这种“副作用”,我使用了此处提到的解决方案:UICollectionView insert cells above maintaining position (like Messages.app)

如以下帖子中所述,“CATransaction.setDisableAction(false)”是顺利更新 contentOffset 位置的关键。

关于ios - UICollectionView insertItemsAtIndexPaths : seems to reload collectionview or autoscrolls to top,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603702/

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