UIView动画-正确制作动画,但再次出现相同位置时

时间:2018-12-17 11:22:20

标签: ios swift uiviewanimation

我有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位置变为屏幕的宽度。

1 个答案:

答案 0 :(得分:3)

这是因为第一次配置视图时您正在使用约束。然后,您将更改视图的框架 /为其设置动画。如果您不会再次布局视图,那将起作用。但是可能是这样做的,它以某种方式布局本身。因此,它第一次将视图带到了受约束的地方。

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