UICollectionView 插入后滑动到最底部

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 有回调,那就用咯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值