我有 2 个 UIView
,每个 View 中都有 UITextField
。我正在从左到右为第一个 UIView
设置动画,第二个 View 在拖尾。所以看起来第一个 View 已经完成,第二个 View 需要进一步工作。这工作得很好,但是当我点击第二个 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)
如何确保第一个屏幕不会再次出现在屏幕上。基本上第一个 View 的 X 位置在动画变为 - 屏幕宽度后。
最佳答案
这是因为您在第一次配置 View 时使用了约束。然后,您正在更改/动画化 View 的框架。如果您不再对 View 进行布局,那将有效。但可能它所做的是,它以某种方式自行布局 View 。因此,它在第一时间将 View 带到了受限的地方。
您可以做的是,在UIView.animate
函数调用 之前更改约束。并在 UIView.animate 动画
闭包中执行 self.layoutIfNeeded
。
关于ios - UIView 动画 - 动画正确但当再次到达相同位置时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814216/