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