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

标签 ios swift uiviewanimation

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

相关文章:

ios - iOS终端Store Kit交易状态有哪些?

swift - IBDesignable View 不呈现

ios - 基于 block 的动画不起作用 : Animations and Completion Blocks are Executed Immediately (Without Duration)

ios - Apple Watch 的预处理器宏?

android - 使用 Amazon SNS 服务发送推送通知

iOS Xcode 4 UINavigationController

ios - Swift - 运算符 == 不能应用于两个 Int 操作数

swift - 如何在允许 JWT 刷新的同时检查 Swift 中的 Auth 用户?

ios - 带 Spring 的 Swift UIView 动画移动到错误的位置然后跳转

ios - 如何触摸动画对象 iOS