1

このコードを使用して、画像を回転させようとしています。画像は回転しましたが、同じ速度です。画像をスムーズに回転させようとしていますが、できません。これが私のコードです:

(void)spinLayer:(CALayer *)inLayer duration:(CFTimeInterval)inDuration
    direction:(int)direction repeat:(int)repeat
{
    repeatcount = repeat+repeatcount;
    timer = [NSTimer scheduledTimerWithTimeInterval: inDuration target: self     selector:@selector(setCountLableValue) userInfo: nil repeats: YES];
    CABasicAnimation* rotationAnimation;
    rotationAnimation =
    [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotationAnimation.fromValue = [NSNumber numberWithFloat: M_PI *2.0 * direction];
    rotationAnimation.repeatCount = repeat;
    NSLog(@"Repeat count %d",repeat);
    rotationAnimation.duration = inDuration;
    rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    [inLayer addAnimation:rotationAnimation forKey:@"rotation"];

}
4

1 に答える 1

1

使用できるさまざまなtimingFunctionがあります。一次関数を使用しました。代わりにこれらのいずれかを試してくださいkCAMediaTimingFunctionLinear

NSString * const kCAMediaTimingFunctionEaseIn;
NSString * const kCAMediaTimingFunctionEaseOut;
NSString * const kCAMediaTimingFunctionEaseInEaseOut;

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CAMediaTimingFunction_class/Introduction/Introduction.htmlを参照してください

繰り返しの問題については、アニメーションの作成後に次のコードを追加してみてください:(これは単なるアイデアであり、イーズ関数が1回だけ使用される理由は本当にわかりません)

rotationAnimation.removedOnCompleted = NO;
rotationAnimation.fillMode = kCAFillModeForwards;
rotationAnimation.cumulative = YES;
于 2012-12-13T12:47:30.923 に答える