gpt4 book ai didi

ios - ipad:为什么我的连续动画的第一个动画总是立即完成?

转载 作者:行者123 更新时间:2023-11-29 04:56:09 26 4
gpt4 key购买 nike

类似于SO问题引用:Why does UIView:animateWithDuration complete immediately?但是,我的代码正在使用 [UIView beginAnimation] 等。

我基本上有这个:

[UIView beginAnimation ...];
[UIView setAnimationDelay: 0.0];
[UIView setAnimationDuration: 1.25];
animatedImage.transform = "scale-up transform";

[UIView setAnimationDelay: 1.25]
[UIView setAnimationDuration: 0.50];
animatedImage.transform = "scale-down transform";

[UIView commitAnimation];

图像立即跳转到放大尺寸,然后 1.25 秒后它会很好地动画到“缩小”尺寸。如果我链接更多序列,除了第一个序列之外,它们都可以正常工作。

最佳答案

当您将动画放在同一个 beginAnimation 区域中时,它们会同时产生动画。

通过调用 [UIView setAnimationDelay: 1.25],您只是覆盖了之前的 [UIView setAnimationDelay: 0.0]。

所以发生的情况是,UIView 被告知同时放大和缩小。我想既然你告诉它向上和向下缩放,它只是跳过到最后一个动画,但你确实告诉它放大,所以它在没有动画的情况下做到了这一点。

我建议改用 block 语法,它允许您在动画完成后执行操作:

[UIView animateWithDuration:1.25
animations:^{animatedImage.transform = "scale-up transform";}
completion:^(BOOL finished)
{
[UIView animateWithDuration:1.25
animations:^{animatedImage.transform = "scale-down transform";}
];
}
];

完成 block 中的代码(^{code} 结构称为“ block ”)是第一个动画之后发生的事情。您可以继续将其链接到任意数量的动画。

(BOOL finish) 是与 block 一起传递的参数。它告诉我们动画是否真的完成了。如果否,您的动画被中断。

关于ios - ipad:为什么我的连续动画的第一个动画总是立即完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com