iOS Swift UIView动画跳回开头

iOS Swift UIView animation jumps back to the beginning



我是 swift 的新手,有点小问题。我在互联网上搜索了几个小时,但找不到任何解决方案,所以这是我最后的希望!

我正在制作一个小游戏,其中有一个 UIView。我使用 UIView.animate() 将它动画化到屏幕上的随机位置。问题是,当我用另一个视图制作另一个动画时,之前的动画视图跳回到它在屏幕上的初始位置。

这是我用来为视图设置动画的代码:

UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseInOut, animations: {
            self.skull.frame = CGRect(x: xSkull, y: ySkull, width: self.skull.frame.size.width, height: self.skull.frame.size.height)
        }, completion: nil)


例如,如果名为 skull 的 UIView 在故事板中被限制为 x: 50 和 y: 200,并且我将其设置为动画,例如到 x: 120, y: 400,它可以找到并正确设置动画。但是当我按下暂停按钮时,点击时有一个小比例动画,头骨跳回 x: 50,y: 200。

当我尝试为视图的约束常量设置动画时,它只是跳跃并且根本没有动画:

UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseInOut, animations: {
            self.skull_xConstraint.constant = xSkull
            self.skull_yConstraint.constant = ySkull
        }, completion: nil)



我真的不确定我做错了什么,也许是自动布局的问题,但就像我说的,我是 swift 的新手,互联网也帮不了我。

所以提前感谢您的帮助!

你需要像这样在Animation中布局子视图

      self.skull_xConstraint.constant = xSkull
      self.skull_yConstraint.constant = ySkull
      UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseInOut, animations: {
           self.view.layoutIfNeeded()
        }, completion: nil)