Swift - 动画后恢复 x 位置
Posted
技术标签:
【中文标题】Swift - 动画后恢复 x 位置【英文标题】:Swift - Reverting x positions after an animation 【发布时间】:2020-12-29 16:16:43 【问题描述】:我的基本动画效果很好。唯一的问题是,如果再次触发这个动画,我动画的两个圆圈的x值不会恢复正常,因此会弄乱动画。起初我认为这可以通过捕获原始 X 值并将圆圈放回那些原始 X 位置来解决,这样动画就可以一遍又一遍地发生,但是当我使用完成时,在第一个动画之后,圈子就是不动。没有完成,他们继续移动,直到他们离开屏幕。
func load()
let originalTealX = tealBubble.layer.position.x
let originalGreenX = greenBubble.layer.position.x
UIView.animate(withDuration: 0.5, delay: 0, options: [.autoreverse, .repeat], animations:
[greenBubble, tealBubble, size] in
tealBubble.layer.position.x -= (UIConstants.spacing * 2 + CGFloat(size))
greenBubble.layer.position.x += (UIConstants.spacing * 2 + CGFloat(size))
, completion: [greenBubble, tealBubble] _ in
tealBubble.layer.position.x = originalTealX
greenBubble.layer.position.x = originalGreenX
)
我希望我是愚蠢的,只是错过了一些简单的事情。提前感谢您的帮助! :)
【问题讨论】:
什么是CGFloat(size)
? size
应该是不能转换为标量的 CGSize
。
【参考方案1】:
您的动画块永远不会到达完成块,因为您设置了标志repeat
。动画永远持续下去。
【讨论】:
以上是关于Swift - 动画后恢复 x 位置的主要内容,如果未能解决你的问题,请参考以下文章
无论我是在主时间轴动画还是子/孙 MC 动画上暂停,如何从最后一个位置恢复动画?