通过 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,然后向该函数添加动画。我想所有的图像都需要正确加载和放置,然后才能制作动画或类似的东西?