2012-12-13 91 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