我遇到了一个让我感到困惑的问题。我写了一个简单的动画,两个图像移动,它完美地工作。然而突然间它停止了动画,我无法弄清楚原因。我还没有做出任何可以影响动画效果的改变。我已经检查过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)
}
答案 0 :(得分:0)
你应该从动画块中约束常量
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)
答案 1 :(得分:0)
我终于通过在类中添加override func viewDidAppear
然后将动画添加到该函数来找到解决方案。我想所有的图像都需要正确加载和放置才能动画或类似的东西?