iOS Swift UIView动画跳回起点

问题描述 投票:0回答:1

我对swift很陌生,有一个小问题。我在网上找了好几个小时,都没有找到任何解决办法,所以这是我最后的希望了!我正在做一个小游戏,在里面我有一个UIView。我正在做一个小游戏,在里面我有一个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)

例如,如果一个叫头骨的UIView在故事板上被限制在x: 50和y: 200的位置,我就把它做成动画,比如说x: 120,y: 例如,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,互联网也帮不上忙 所以先谢谢大家的帮助!

ios swift xcode animation ios13
1个回答
2
投票

你需要在动画中布局子视图,像这样吗?

      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)
© www.soinside.com 2019 - 2024. All rights reserved.