1

我现在正在实施一个app, for iOS devicesso in objective C,我在问如何在旋转后保持回到原点位置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];

但之后,我让它消失了一段时间,使用:

MySuperUIImageView.alpha = 0.0f;

当我重新使用它时,我希望它处于第一个原始位置,没有旋转。容易吗?

提前致谢 !

4

2 回答 2

2

是的。非常简单地:

MySuperUIImageView.transform = CGAffineTransformIdentity;
于 2013-08-31T17:48:08.670 回答
0

实际上,有。由于您正在对视图应用仿射变换,因此您可以通过将其变换设置为应用恒等变换矩阵的CGAffineTransformIdentity来重置应用于视图的所有变换:

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

注意:在 Objective 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];
}];
于 2013-08-31T17:48:31.697 回答