UIView动画在完成块中开始位移。

3

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

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图:

enter image description here


请添加 animate 方法的代码。 - Paras Gorasiya
@ParasGorasiya,我在我的问题中有一个动画的代码。 - Sofia Rozhina
1个回答

2

我不确定你的意图,但是我会在第一个块中动画帧:

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)
    })
}

真的有效。谢谢!但是也许你知道使用帧和变换制作动画有什么区别吗? - Sofia Rozhina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接