2012-02-22 74 views
1

我想用可可來執行一個簡單的動畫。一個按鈕在按下時會導致圖像翻轉其y軸,然後再次按下時會翻轉。另一個按鈕應該導致窗口翻轉其x軸並以相同的方式返回。圖像的代碼有效,而窗口將垂直翻轉第一次按下,但不會翻轉第二次。上的y軸簡單的ios動畫:旋轉窗口和反向

圖片

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

[pic.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.y"]; 

[UIView commitAnimations]; 

窗口上x軸

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

[window.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.x"]; 

[UIView commitAnimations]; 
遇到麻煩,因爲這些代碼是幾乎相同的發現問題

。幫助將不勝感激,謝謝。

+0

改爲使用基於塊的動畫方法。這不是你的問題的答案,只是一般性的建議 – Avi 2012-02-22 02:46:44

+0

我絕對會這樣做,但我需要使用基本的動畫方法來進行這個特定的練習。感謝 – Daisy 2012-02-22 02:51:13

+0

我對圖像翻轉感到驚訝,因爲您正在靜態設置變換值。如果你做了這樣的事情會發生什麼:object.transform = CGAffineTransformRotate(object.transform,M_PI); – Avi 2012-02-22 02:59:35

回答

2

我設法讓代碼使用稍微不同的格式。

CATransform3D flip = CATransform3DMakeRotation(M_PI, 1.0, 0.0, 0.0); 
if (CATransform3DEqualToTransform(window.layer.transform, flip)) 
{ 
    flip = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 0.0); 
} 


[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

window.layer.transform = flip; 

[UIView commitAnimations]; 

從我可以告訴,每當它得到了旋轉命令時,只考慮在其原始狀態的窗口。意味着每一個新的命令都會翻轉,它看到它已經在請求的位置,並且什麼都沒做。一旦我意識到這一點,我只需要給它命令就可以恢復正常。對我來說,這仍然是一個謎,爲什麼我的問題中的代碼適用於y軸而不是x。