2012-12-13 90 views
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"]; 

} 

回答

1

您可以使用不同的timing功能。您使用的线性函数,尝试其中之一,而不是kCAMediaTimingFunctionLinear

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

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CAMediaTimingFunction_class/Introduction/Introduction.html

关于重复问题,请尝试创建动画后加入如下代码:(这只是一个想法,我真的不知道为什么,便于功能只能使用一次)

rotationAnimation.removedOnCompleted = NO; 
rotationAnimation.fillMode = kCAFillModeForwards; 
rotationAnimation.cumulative = YES; 
+0

它的工作,但对于单个旋转不是总转 – jpd

+0

第一次旋转后会发生什么?如果没有缓解功能,它会停止还是继续? – HashtagMarkus

+0

它继续但没有效果 – jpd