tableView 或 collectionView 最底部插入cell,自动滑动到最底部
正确执行办法:
[_collection performBatchUpdates:^{
[_collection insertItemsAtIndexPaths:@[idx]];
} completion:^(BOOL finished) {
if (finished)
[self.collection scrollToItemAtIndexPath:[idx indexPathByAddingIndex:1] atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:1];
}];
插入后滑动到最底部
分析原因,insert 后直接 scroll,为什么不会滑到最底部呢?
调用这两个函数,分别提交各自的任务。提交的两个任务会在 runloop 下一圈里进行 (before waiting 阶段)(两个任务是在一个 runloop 里提交的)
下一圈 runloop 里,发现需要 insert,好的,开始 insert 动画;
紧接着发现要 scroll (可以理解为“同时”),而此时 insert 动画刚开始,collectionView 在这一瞬间 ,底部实际上是没有多出空间的,仍然是 insert 动画开始时的状态,也就是说,scroll 动作刚开始就发现已经达到完成状态了,直接结束。
因此想办法让 insert 完成后,回调执行 scroll,但是并没有发现插入回调的 API,恰好 performBatchUpdates 有回调,那就用咯。