2013-08-31 115 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