如何可靠地确定 UICollectionView 布局何时完成动画

Posted

技术标签:

【中文标题】如何可靠地确定 UICollectionView 布局何时完成动画【英文标题】:How to reliably determine when UICollectionView layout has finished animating 【发布时间】:2013-07-21 04:18:00 【问题描述】:

我在想办法确定 UICollectionView 何时/已完成动画制作时遇到了问题。

我目前有一个 UICollectionView,它使用 setCollectionViewLayout:animated: 在两个子类流布局之间进行动画处理

动画看起来很棒,但是,如果用户在动画期间选择了一个单元格,我会有一些不良行为。

我正在考虑通过 UICollectionViewDelegate 方法 collectionView:shouldSelectItemAtIndexPath: 返回 NO 来忽略单元格“选择” - 但是 - 我无法找到可靠的测试来查看集合视图当前是否正在动画。

有什么想法吗?

【问题讨论】:

【参考方案1】:

尝试检查是否没有动画键。BOOL isAnimating = myView.layer.animationKeys.count > 0

【讨论】:

谢谢 - 成功了。有趣的是,我必须检查动画单元格上的动画键,而不是 UICollectionView。这意味着遍历可见单元格检查动画。我的最终代码 ..- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath NSArray *visibleCells = [self.myCollectionView visibleCells]; for (UICollectionViewCell *cell in visibleCells) if (cell.layer.animationKeys.count > 0) return NO; return YES; (注意,导入 QuartzCore.h 以访问 layer

以上是关于如何可靠地确定 UICollectionView 布局何时完成动画的主要内容,如果未能解决你的问题,请参考以下文章

如何可靠地确定Passbook是否可用?

如何通过关闭连接可靠地确定主体长度(RFC 2616 4.4.5)

当成功有时会导致退出代码为 1 时,如何可靠地确定 pg_restore 是不是成功?

如何使用 C# 可靠地确定安装了 SQL Server 2008 的哪些组件?

可靠地确定 BIM 360 项目的 Revit 版本

UICollectionView 中的 Alamofire + Swift