【问题标题】:iOS Swift UIView animation jumps back to the beginningiOS Swift UIView 动画跳回到开头
【发布时间】:2020-06-10 15:47:41
【问题描述】:



我对 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)


例如,如果调用头骨的 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 新手,互联网也帮不了我。

所以提前感谢您的帮助!

【问题讨论】:

  • 你使用的是约束还是框架?
  • 当我尝试为约束的常量设置动画时,它只是跳跃并且根本没有动画。

标签: ios swift xcode animation ios13


【解决方案1】:

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

      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)

【讨论】:

  • 然后我收到错误“'GameViewController' 类型的值没有成员'layoutIfNeeded'”
  • 更新了我的答案... GameViewController 视图有成员
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多