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
。
我有 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
。