动画后 UICollectionViewCell 位置错误

Posted

技术标签:

【中文标题】动画后 UICollectionViewCell 位置错误【英文标题】:UICollectionViewCell position wrong after animating 【发布时间】:2018-01-23 11:22:52 【问题描述】:

因此,我正在尝试基于 UICollectionView 和自定义 UICollectionViewFlowLayout 在 Shazam Discover 和 Tinder 之间构建一个开源库组合。

我遇到了一个问题,在为一侧的单元格设置动画后(例如,将其滑到一侧),当单元格被 UICollectionView 重用时,它会保持在该位置。 (我猜单元重用是这里的问题,因为它似乎只在滚动几个单元后才会发生)

有什么简单的方法可以解决这个问题吗?还是我在这里做错了什么?看了几天,但自己似乎找不到解决办法。

您可以尝试/查看Github上的代码

我尝试发布一些代码 sn-ps,但我不确定我应该在此处发布哪些代码,因为它有很多代码。如果我应该在这里发布代码,请告诉我。

非常感谢任何帮助。祝你有美好的一天:)

下面是正在发生的事情的演示:

【问题讨论】:

如何触发丢弃动画?我下载了该项目,但没有滑动工作.. 只需滑动(从中心拖动到一侧)滑动仍然有点问题,但向左侧滑动应该效果最好 @MilanNosáľ 还要确保您从开发分支下载代码,因为 master 尚未包含此代码。 是的,我刚刚注意到我使用了 master.. 去看看 【参考方案1】:

在单元格类之外,在HomeVC 中,您可以在其中处理平移以将卡片刷走,您还可以操作图层的anchorPoint - 您需要重置它以使绘图工作像以前一样:

override func prepareForReuse() 
    super.prepareForReuse()

    // reset to default value (https://developer.apple.com/documentation/quartzcore/calayer/1410817-anchorpoint)
    self.layer.anchorPoint = CGPoint(x: 0.5, y: 0.5)

【讨论】:

@JoniVR 我已经创建了一个带有修复的拉取请求,您只需要重置锚点,因为您在平移过程中对其进行了操作。此外,请注意向上/向下滑动时的奇怪故障非常短而且速度很快..也有一些要调试的东西,但它与这个问题无关......我现在没有时间为此做出贡献,但也许以后我可以去做:).. 我已经合并了它,我知道,要让它稳定还有很多工作要做,但这有很大帮助。非常感谢! @JoniVR 很高兴我能为开源做出贡献:)

以上是关于动画后 UICollectionViewCell 位置错误的主要内容,如果未能解决你的问题,请参考以下文章

带有协议的 UICollectionViewCell 动画

如何控制 UICollectionViewCell 调整动画大小?

UICollectionViewCell 展开动画

自定义 UICollectionViewCell contentView 动画

如何将 UITapGestureRecognizer 添加到 UICollectionViewCell 中的图像

UICollectionViewCell 带有约束的动画