【发布时间】: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。
标签: swift animation view uiview uikit