0

直線ではなく弓でアニメーションを作成したいです。
これは私のコードです:

UIImageView *logoImageView = [[UIImageView alloc] initWithFrame:CGRectMake(-125, 100, 125, 125)];
    logoImageView.image = logoImage;
    logoImageView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:logoImageView];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:3.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
logoImageView.frame = CGRectMake(screenRect.size.width - 192, 190, logoImageView.frame.size.width, logoImageView.frame.size.height);
[UIView commitAnimations];

私もこれを試しましたが、うまくいきません(最後の中心から移動するだけです)。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:3.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
logoImageView.center = CGPointMake ...
logoImageView.center = CGPointMake ...
logoImageView.center = CGPointMake ...

logoImageView.frame = CGRectMake(screenRect.size.width - 192, 190, logoImageView.frame.size.width, logoImageView.frame.size.height);
[UIView commitAnimations];

これどうやってするの?

前もって感謝します。

4

1 に答える 1

3

私のコメントで述べたように、そのCAKeyframeAnimationような複数の値を実行する必要があります。簡単な方法は、値を指定し、calculationMode補間方法を指定するだけです。それがあなたが望む結果をもたらさない場合はCGPath、ビューをアニメーション化するものを指定できます。あなたがやろうとしていることのコードは、次のようになります。

CAKeyframeAnimation *curvedAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
curvedAnimation.duration = 3.0;
curvedAnimation.calculationMode = kCAAnimationCubic;
curvedAnimation.values = @[[NSValue valueWithCGPoint:currentPoint],
                           [NSValue valueWithCGPoint:firstPoint],
                           [NSValue valueWithCGPoint:secondPoint],
                           [NSValue valueWithCGPoint:endPoint]];

curvedAnimation.fillMode = kCAFillModeBackwards; // Show first value before animation begins

logoImageView.layer.position = endPoint; // Change position to end value (Core Animation only performs the animation, it won't change the property you are animating)
[logoImageView.layer addAnimation:curvedAnimation
                           forKey:@"my bow animation"];

コア アニメーションを初めて使用する場合。QuartzCore.frameworkプロジェクトとコードに追加する必要がある場所にあります#import <QuartzCore/QuartzCore.h>

于 2013-03-06T22:40:00.520 に答える