0

UIViewCore 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 に答える