UIView 动画 - 动画正确但当再次到达相同位置时

UIView Animation - Animates properly but when comes again to the same position

我有 2 个 UIView,每个视图中都有 UITextField。我第一个 UIView 从左到右制作动画,第二个视图拖尾它。所以看起来第一个视图已经完成,第二个视图需要进一步工作。这工作得很好,但是当我点击第二个 UIView 的文本字段时,第一个 UIView 又回到了屏幕。代码如下

UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: {
    var resendViewNewFrame = self.resendView.frame
    resendViewNewFrame.origin.x -= resendViewNewFrame.size.width

    var confirmViewNewFrame = self.confirmView.frame
    confirmViewNewFrame.origin.x = 0
    self.resendView.frame = resendViewNewFrame
    self.confirmView.frame = confirmViewNewFrame
    self.mobileNumberTextField.resignFirstResponder()
}, completion: nil)

如何才能保证第一屏不再出现。基本上第一个视图的 X 位置在动画变为屏幕宽度后。

这是因为您在第一次配置视图时使用了约束。那么,你就是changing/animating的浏览量。如果您不再对视图进行布局,那将有效。但可能它的作用是,它以某种方式布局 视图本身。因此,它在第一时间将视图带到了受限的地方。

您可以做的是,在 UIView.animate 函数调用 之前 更改约束。并在 UIView.animate animations 闭包中执行 self.layoutIfNeeded