gpt4 book ai didi

iphone - setAnimationBeginsFromCurrentState=YES 在 iOS 5 或 iPad 上不起作用吗?

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

即使我所有的动画 block 都配置为:

setAnimationBeginsFromCurrentState=YES

对于基于 block 的动画(自 iOS 4 以来的新方法)也是如此,设置了 UIViewAnimationOptionBeginFromCurrentState 选项。

在我所有的旧设备上,这都能完美运行。在 iOS 5 和 iPad 模拟器上它没有。有解决方法吗?

(注意:它似乎适用于所有测试的设备。只是模拟器不行。)

这是一个在 4.3 或 5.0 iPad 模拟器中不起作用的示例:

[UIView animateWithDuration:0.5 
delay:1.0f
options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionBeginFromCurrentState |
UIViewAnimationOptionOverrideInheritedDuration | UIViewAnimationOptionOverrideInheritedCurve
animations:^{
self.layer.transform = CATransform3DScale(CATransform3DIdentity, 0.5f, 0.5f, 1.0f);
}
completion:^(BOOL finished) {
[self performSelector:@selector(finishedScaling)];
}];

另一个动画开始将变换比例设置为 0.1、0.1(= 非常小)。在飞行中,此动画启动并尝试将其恢复到 0.5、0.5。开球时,之前开球的动画突然以0.1、0.1(=非常小)结束。然后从 0.1 回升到 0.5。不应该发生。也许是一个糟糕的选项组合?

最佳答案

您在 View 动画 block 中说 self.layer.transform =。 View 动画 block 用于为 View 设置动画。您可以通过设置 View 的可动画属性(而不是图层的可动画属性)来执行此操作。

此外,如果 self 是一个 View ,则 self.layer.transform 不是隐式可动画的。您不能隐式动画(即通过设置属性) View 的底层。当您说 self.layer.transform = 时,该层将始终跳转到新值。

所以解决方案是说 self.transform =(如果 self 是一个 View ),或者根本不使用基于 block 的动画 - 使用 Core Animation(例如 CABasicAnimation)来制作动画层。

关于iphone - setAnimationBeginsFromCurrentState=YES 在 iOS 5 或 iPad 上不起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8376708/

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