iOS Swift UIView 动画跳回到开头
Posted
技术标签:
【中文标题】iOS Swift UIView 动画跳回到开头【英文标题】:iOS Swift UIView animation jumps back to the beginning 【发布时间】: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 新手,互联网也帮不了我。 所以提前感谢您的帮助!
【问题讨论】:
你使用的是约束还是框架? 当我尝试为约束的常量设置动画时,它只是跳跃并且根本没有动画。 【参考方案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 视图有成员以上是关于iOS Swift UIView 动画跳回到开头的主要内容,如果未能解决你的问题,请参考以下文章
UIView transform.scaleBy 动画不起作用
如何让 UIView / Menu 滑入和滑出? (使用 C# 而不是 Swift 的 Xamarin IOS)