2012-05-31 143 views
1

我正在開發一個應用程序,其中我旋轉了360度的視圖,但我無法旋轉360度。 已經越來越被旋轉180度後得到旋轉時,它正在回到它原來的位置..如何以360度旋轉3D視圖?

animation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
transform = CATransform3DMakeRotation(3.14f, 1.0f, 1.0f, 1.0f); 
value = [NSValue valueWithCATransform3D:transform]; 
[animation setToValue:value]; 
[animation setAutoreverses:YES]; 
[animation setDuration:0.9]; 
[[rotatBall layer] addAnimation:animation forKey:@"180"]; //rotatBall is a view 

換句話說,它正在來回轉動。 如何不斷旋轉它.... 請幫助...

回答

0

這有點棘手,但你可以在docs找到它。
要連續旋轉它,首先需要設置toValue,然後將動畫重複計數設置爲HUGH_VALF(在math.h中定義)。

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; 

    transform = CATransform3DMakeRotation(1.0f, 1.0f, 1.0f, 1.0f); 
    fromValue = [NSValue valueWithCATransform3D:transform]; 

    transform = CATransform3DMakeRotation(M_PI*2, 1.0f, 1.0f, 1.0f); 
    toValue = [NSValue valueWithCATransform3D:transform]; 

    animation.fromValue = fromValue; 
    animation.toValue = toValue; 
    animation.duration = 0.9f; 
    animation.repeatCount = HUGE_VALF;  // HUGE_VALF is defined in math.h so import it 
    [rotatBall.layer addAnimation:animation forKey:@"rotation"]; 
0

你的動畫扭轉它完成之後,因爲你設置autoreversesYES。這就是autoreverses所做的。

至於你爲什麼要旋轉180度而不是360度......多少弧度是360度?

+0

2弧度,但每當我寫2,它甚至不動 –

+0

你可能想[查看你的數學(http://www.google.com/search?q=how+many+radians+是+ 360 +度)。另外,你可能會發現常量M_PI有幫助。 – rickster

+0

我的意思是180 * 2 ...即使我寫了6.28,但沒有結果..請幫助 –