0

我想UIView使用 Core Animation 为子类设置动画。就我而言,奇怪的是我希望动画每帧运行一个固定的量,而不是持续时间。所以从 100 -> 200 的动画应该比 100 -> 50 花费更长的时间,但是视图的“速度”应该是恒定的。我的代码目前如下所示:

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
animation.duration = 0.4;

[[self layer] addAnimation:animation forKey:@"transform"];

self.transform = CGAffineTransformMakeTranslation(0, 100);

这可能吗?怎么做?

4

1 回答 1

1

为什么不直接从所需的运动中计算所需的时间呢?就像是:

CGFloat distanceToTimeFactor = 0.1;
CGPoint current = self.center;
CGPoint new = CGPointMake(100,100);

CGFloat xDist = (new.x - current.x);
CGFloat yDist = (new.y - current.y);
CGFloat distance = sqrt((xDist * xDist) + (yDist * yDist));

CGFloat duration = distance * distanceToTimeFactor;

然后以该持续时间制作动画。

于 2011-02-03T16:35:10.113 回答