Ios 约束动画仅部分设置动画,导致看起来像一个;“跳跃”;

Ios 约束动画仅部分设置动画,导致看起来像一个;“跳跃”;,ios,animation,constraints,core-animation,Ios,Animation,Constraints,Core Animation,使用系统默认动画时,一切正常。但是,在animateWithDuration内更改顶部位置约束时,视图的高度调整不会设置动画,而是跳跃。然后将其位置设置为正确位置的动画 以下是显示问题的示例视频: 底部视图是蓝色的,您将看到,当它需要收缩时,它会从包含视图的底部“分离”,然后设置动画,直到它接触底部。我希望底部视图保持锁定到包含视图的底部。有什么建议吗 垂直约束设置为: constraints += NSLayoutConstraint.constraintsWithVisualFormat("

使用系统默认动画时,一切正常。但是,在animateWithDuration内更改顶部位置约束时,视图的高度调整不会设置动画,而是跳跃。然后将其位置设置为正确位置的动画

以下是显示问题的示例视频:

底部视图是蓝色的,您将看到,当它需要收缩时,它会从包含视图的底部“分离”,然后设置动画,直到它接触底部。我希望底部视图保持锁定到包含视图的底部。有什么建议吗

垂直约束设置为:

constraints += NSLayoutConstraint.constraintsWithVisualFormat("V:|[topView][bottomView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metricsDict, views: viewDict)

_bottomViewTopConstraint = NSLayoutConstraint(item: bottomView, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: bottomViewMiddlePos)
通过更改_bottomViewTopConstraint常量,然后调用动画,可以捕捉到最近的目标放置点:

self.view.layoutIfNeeded()
UIView.animateWithDuration((2.3).seconds) {
_bottomViewTopConstraint.constant = currentPosition + shortestDelta
   self.view.layoutIfNeeded()
}

没有报告必须打破约束的错误。因此,自动布局系统是正常的,但是它没有正确地设置位置变化引起的高度变化的动画。

问题是,在调整大小期间没有出现动画,或者底部视图没有锚定到包含视图的底部,或者两者都没有?底部视图没有锚定到包含视图的底部。从该约束“V:|[topView][bottomView]|”。我还尝试了“V:|[topView][bottomView]-0@1000-|“结果相同。什么是容器视图,底部视图的父类?今天我遇到了这种情况-问题是我在ui元素本身上使用了LayoutFneeded,但在保存该元素的视图上没有使用LayoutFneeded-就像您所做的那样。nvm最终解决了它!”!由于我正在制作动画的视图实际上是childViewController的一部分,因此在
view.super上调用
layoutIfNeeded