通过 layoutIfNeeded 的图像动画停止工作
Animation of image through layoutIfNeeded stopped working
我遇到了一个让我很困惑的问题。我写了一个简单的两张图片的动画,效果很好。但是突然间它停止了动画,我不明白为什么。我没有做任何我能想到的会影响动画的改变。我已经检查了 NSLayoutConstraints 实际上正在更新并且它们正在更新,但它没有被动画化。任何想法将不胜感激。
很遗憾,我没有任何 git 版本。我是个新手,至少这次经历让我意识到了 git 的价值,我以后会使用它。我在故事板中添加了约束,其中四个是我试图通过代码影响的。它们是我尝试移动的两个图像的 y 和 x 约束。
其他信息 我有四个警告说:在当前配置中关闭了约束引用项目。在当前配置中关闭此约束。我已经能够得出结论,发出警告的约束是我要设置动画的四个约束。但我仍然不确定如何解决这个问题。
补充更新
我现在已将动画代码移至 override func viewWillAppear(animated: Bool) { super.viewWillAppear(true)
。这样做之后,如果我删除第一个 self.view.layoutIfNeeded()
,我实际上会看到动画,但是它会为所有视图设置动画。但是我不能只让约束变化仍然保持动画。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
...
self.view.layoutIfNeeded()
self.firstCallyC?.constant = 0
UIView.animateWithDuration(1.3, delay: 0.3, options: .CurveEaseInOut, animations: {
self.firstCallyC!.constant = (usePoint[0].y) - 210
self.firstCallxC?.constant = (usePoint[0].x) - 300
self.meditateyC?.constant = (usePoint[179].y) - 210
self.meditatexC?.constant = (usePoint[179].x) - 300
self.view.layoutIfNeeded()
}, completion: nil)
}
你应该将常量限制在动画块之外
firstCallyC!.constant = (usePoint[0].y) - 210
firstCallxC?.constant = (usePoint[0].x) - 300
meditateyC?.constant = (usePoint[179].y) - 210
meditatexC?.constant = (usePoint[179].x) - 300
UIView.animateWithDuration(1.3, delay: 0.3, options: .CurveEaseInOut, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
我终于找到了解决方案,方法是向 class 添加 override func viewDidAppear
,然后向该函数添加动画。我想所有的图像都需要正确加载和放置,然后才能制作动画或类似的东西?
我遇到了一个让我很困惑的问题。我写了一个简单的两张图片的动画,效果很好。但是突然间它停止了动画,我不明白为什么。我没有做任何我能想到的会影响动画的改变。我已经检查了 NSLayoutConstraints 实际上正在更新并且它们正在更新,但它没有被动画化。任何想法将不胜感激。
很遗憾,我没有任何 git 版本。我是个新手,至少这次经历让我意识到了 git 的价值,我以后会使用它。我在故事板中添加了约束,其中四个是我试图通过代码影响的。它们是我尝试移动的两个图像的 y 和 x 约束。
其他信息 我有四个警告说:在当前配置中关闭了约束引用项目。在当前配置中关闭此约束。我已经能够得出结论,发出警告的约束是我要设置动画的四个约束。但我仍然不确定如何解决这个问题。
补充更新
我现在已将动画代码移至 override func viewWillAppear(animated: Bool) { super.viewWillAppear(true)
。这样做之后,如果我删除第一个 self.view.layoutIfNeeded()
,我实际上会看到动画,但是它会为所有视图设置动画。但是我不能只让约束变化仍然保持动画。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
...
self.view.layoutIfNeeded()
self.firstCallyC?.constant = 0
UIView.animateWithDuration(1.3, delay: 0.3, options: .CurveEaseInOut, animations: {
self.firstCallyC!.constant = (usePoint[0].y) - 210
self.firstCallxC?.constant = (usePoint[0].x) - 300
self.meditateyC?.constant = (usePoint[179].y) - 210
self.meditatexC?.constant = (usePoint[179].x) - 300
self.view.layoutIfNeeded()
}, completion: nil)
}
你应该将常量限制在动画块之外
firstCallyC!.constant = (usePoint[0].y) - 210
firstCallxC?.constant = (usePoint[0].x) - 300
meditateyC?.constant = (usePoint[179].y) - 210
meditatexC?.constant = (usePoint[179].x) - 300
UIView.animateWithDuration(1.3, delay: 0.3, options: .CurveEaseInOut, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
我终于找到了解决方案,方法是向 class 添加 override func viewDidAppear
,然后向该函数添加动画。我想所有的图像都需要正确加载和放置,然后才能制作动画或类似的东西?