我有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位置变为屏幕的宽度。
答案 0 :(得分:3)
这是因为第一次配置视图时您正在使用约束。然后,您将更改视图的框架 /为其设置动画。如果您不会再次布局视图,那将起作用。但是可能是这样做的,它以某种方式布局本身。因此,它第一次将视图带到了受约束的地方。
您可以做的是,在UIView.animate
函数调用之前更改。并在self.layoutIfNeeded
闭包内进行UIView.animate animations
。