我使用 UIView.animate 编写了一个包含两个动画的简单动画链,但是完成块中的第二个动画并不完全从第一个动画的位置开始,所以我有奇怪的向右位移。任何人都可以帮忙吗?也许我没有完全理解 tranfrorm 属性。

UIView.animate(withDuration: 3, animations: {
    self.redView.transform = self.redView.transform.translatedBy(x: 100, y: 0)
}) { (_) in
    UIView.animate(withDuration: 2, animations: {
        self.redView.transform = self.redView.transform.scaledBy(x: 2, y: 2)
    })
}

我的 redView 应该在 100 上向右移动,然后从同一个地方变成两倍大。但是在第二个动画之前,右侧有位移。我不知道为什么会发生这种情况。
谢谢!

有这个问题的 Gif:

ios - 完成块中的 UIView 动画以位移开始-LMLPHP

最佳答案

不确定您的意图是什么,但我会在第一个块中为帧设置动画:

let initialFrame = redView.frame
UIView.animate(withDuration: 3, animations: {
    self.redView.frame = initialFrame.offsetBy(dx: 100, dy: 0)
}) { (_) in
    UIView.animate(withDuration: 2, animations: {
        self.redView.transform = self.redView.transform.scaledBy(x: 2, y: 2)
    })
}

关于ios - 完成块中的 UIView 动画以位移开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46846315/

10-16 04:50