gpt4 book ai didi

ios - 如何禁用 "Implicit"或自动动画

转载 作者:行者123 更新时间:2023-11-29 11:22:50 25 4
gpt4 key购买 nike

我的代码遇到了一些问题。我正在使用 OpenFlow —目前免费供开发人员使用的 Apple coverflow 替代品。在演示中,一切似乎都很好。 “流”通过使用 UIView 动画进行动画处理。

我已将演示改编为在 iPad 上运行。除了由于某种原因 View 现在隐式动画外,一切都很好。我不明白这是为什么。我什至不认为 iOS 中可以使用隐式动画。

我真的需要一些帮助来首先弄清楚为什么会发生这种情况,以及如何禁用它们。

最佳答案

好吧,在经历了很多麻烦和浪费了很多时间之后,我弄清楚了我的代码中到底发生了什么。我以为我正在经历隐式动画,但我不明白为什么这会突然开始发生。

我决定最好尝试理解隐式动画,所以我自己进行了实验,想弄清楚如何在受控情况下实现它们。我从未见过隐式动画发生的原因是因为我一直在使用 UIView 或其子类之一。

我了解到,如果您从 CALayer 开始并严格使用该层,则对许多属性的所有更改都将隐式设置动画。

当您看到 UIView(及其后代)都自动支持图层并具有 CALayer 属性时,您可能会有些困惑(我知道对我来说是这样)。

尽管如此,很明显 UIView 以某种方式覆盖了其 CALayer 属性的隐式动画机制。所以如果你想要隐式动画,你必须直接使用 CALayer 的,而不是仅仅假设因为 UIView 有一个 CALayer 属性,它会表现得一样。

至于我遇到的错误...这可能是我遇到过的最奇怪的错误。一切,无论我尝试什么,都是在没有任何动画代码的情况下对值的任何更改进行动画处理。罪魁祸首最终成为嵌套的 UIView 动画 block 。

注意以下几点,看看您是否能立即发现问题:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.2];
//animate something
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelay:.8];
[UIView setAnimationDuration:.4];
//animate something else
[UIView commitAnimations];

我未能用另一个 [UIView commitAnimations] 终止嵌套 block 。它实际上是在我的程序中泄漏动画。一切都充满活力,甚至是完全不同类中的代码。这个 bug 被压扁了……继续下一个!

关于ios - 如何禁用 "Implicit"或自动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995865/

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