2011-02-03 36 views
0

我想要使用Core Animation为子类别UIView设置动画。我个人的奇怪之处在于,我希望动画每帧都能运行固定的数量,而不是持续时间。所以从100 - > 200的动画应该花费比100 - > 50更长的时间,但视图的“速度”应该是恒定的。我的代码目前看起来像这样:将UIView动画化为无指定持续时间的值

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); 

这可能吗?它将如何完成?

回答

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; 

然后使用该持续时间进行动画处理。

+0

谢谢!我结束了这个解决方案。 – ErikPerik 2011-02-03 16:47:09