gpt4 book ai didi

ios - 当 UICollectionView 滚动时,UIView 动画停止工作

转载 作者:行者123 更新时间:2023-11-29 12:15:35 33 4
gpt4 key购买 nike

我有一个 UIView。我在代码的 viewDidLayoutSubviews 方法中设置它的位置:

self.displayView.frame =  CGRectMake(-self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height);

按下一个按钮来显示这个 View ,动画完成如下:

[UIView animateWithDuration:0.25 animations:^{
self.displayView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}];

我在同一页面上还有一个 UICollectionView。在我开始滚动 UICollectionView 之前,上面的动画效果很好。如果我滚动 UICollectionView 然后单击按钮使上面的动画发生,它不起作用。我在 animateWithDuration block 之前和之后检查了 displayView 的位置,它显示了完全相同的位置。 (displayView 的 x 和 y 坐标不变)试图找出我搞砸的地方。任何帮助将不胜感激。

最佳答案

我今天在尝试制作弹跳动画时遇到了这个问题:

UIView.animate(withDuration: 1,
delay: 0,
options: [.autoreverse, .repeat],
animations: { self.bouncingHeart.transform = CGAffineTransform(scaleX: 1.2, y: 1.2) },
completion: nil)

滚动后它就不再有动画了。解决方案是在调用 prepareForResure 时重置 animations block 内更改的属性:

override func prepareForReuse() {
super.prepareForReuse()
bouncingHeart.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
}

为什么会这样?

如果您为已经达到其目标值 的属性设置动画,则不会出现任何动画。您可以通过使用 alpha = 1 创建一个 UIView 来测试它,然后尝试为 alpha = 1 设置动画 - 完成 block 将立即执行。

关于ios - 当 UICollectionView 滚动时,UIView 动画停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105488/

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