2013-08-31 121 views
1

我現在正在執行app,因爲iOS devices所以在objective C,我在問如何在旋轉後保持原位置UIImageView保留原點位置UIImageView

例如,我用我的UIImageView這樣的:

CGAffineTransform initialPosition = CGAffineTransformMakeRotation(0); 
CGAffineTransform finalPosition = CGAffineTransformMakeRotation(M_PI/2); 
[UIView beginAnimations: @"Rotate animation" context: NULL]; 
MySuperUIImageView.transform = initialPosition; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationRepeatAutoreverses:NO]; 
[UIView setAnimationRepeatCount:1]; 
[UIView setAnimationDelegate:self]; 
MySuperUIImageView.transform = finalPosition; 
[UIView commitAnimations]; 

但之後,我做到了desappear一時間,使用:

MySuperUIImageView.alpha = 0.0f; 

當我重新使用它,我希望它在第一個原始位置,沒有旋轉。這很容易嗎?

在此先感謝!

回答

2

是的。非常容易:

MySuperUIImageView.transform = CGAffineTransformIdentity; 
+0

你是對的! – user2057209

0

其實,有。既然你施加仿射變換到視圖,您可以通過設置恢復應用到視圖中的所有變換其轉化爲CGAffineTransformIdentity它適用恆等變換矩陣:

1 - 0 - 0 
0 - 1 - 0 
0 - 0 - 1 
[mySuperUIImageView setTransform:CGAffineTransformIdentity]; 

注意:在目標C中,約定是以大寫字母開頭的類名,以及小寫的實例。

從iOS 4開始,Apple建議使用基於塊的UIView動畫。以下是我相信您嘗試使用更新代碼的一個示例。

CGAffineTransform finalPosition = CGAffineTransformMakeRotation(M_PI/2); 

[UIView animateWithDuration:1.0 delay:0.0 options:kNilOptions animations:^{ 
    [mySuperUIImageView setTransform:finalPosition]; 
} completion:^(BOOL finished) { 
    [mySuperUIImageView setTransform:CGAffineTransformIdentity]; 
}]; 
+0

謝謝你的回答。另一個可能更短,但謝謝=) – user2057209