【问题标题】:Swift - Reverting x positions after an animationSwift - 动画后恢复 x 位置
【发布时间】: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


【解决方案1】:

您的动画块永远不会到达完成块,因为您设置了标志repeat。动画永远持续下去。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多