2011-02-03 12 views
0

コアアニメーションを使用してサブクラス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

関連する問題