2011-02-03 37 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