1

私は現在app、 を実装しています。iOS devicesそのため、回転後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 に答える