【发布时间】:2023-03-04 22:06:01
【问题描述】:
我刚刚创建了一个这样的关键帧动画:
[UIView animateKeyframesWithDuration:10 delay:0 options:0 animations:^{
[UIView addKeyframeWithRelativeStartTime:0 relativeDuration:.1 animations:^{
view.alpha = 0;
}];
} completion:nil];
这是一个被创建的CAKeyframeAnimation:
(lldb) po [self.layer animationForKey:@"opacity"]
<CAKeyframeAnimation:0x10a6364b0; keyTimes = (
0,
"0.1",
1
); values = (
1,
0,
0
); calculationMode = linear; delegate = <UIViewKeyframeAnimationState: 0x10a6358d0>; fillMode = both; timingFunction = easeInEaseOut; duration = 10; keyPath = opacity>
问题:
整个动画应该需要 10 秒,不透明度动画需要 10 * 0.1 = 1 秒,对吧?当我查看动画时,变化的动画时间超过 1 秒。
为什么?
【问题讨论】:
-
调试输出看起来是正确的(从 0 到 1 秒动画从 100% 到 0% 然后再用 9 秒从 0% 到 0% 动画)。你能描述一下你所看到的吗?你在其他地方改变不透明度吗?你没有在模拟器中开启慢动画吧?
-
是的,CAKeyframeAnimation 看起来完全正确。我看到的是不透明度正在改变 2 - 2.5 秒,而不是一秒。我没有在任何地方更改它,并且慢速动画已关闭。
-
如果您自己创建关键帧动画(而不是通过 UIView 方法),您会看到同样的情况吗?
-
@DavidRönnqvist 我还没试过那个。好主意。但是我在整个应用程序中使用
CAKeyframeAnimation来处理其他事情,它就像一个魅力。只是想试试这个新的UIView东西和繁荣。
标签: ios cocoa-touch uiview ios7 core-animation