0

これは私の質問です:

回転する角度を取得したら、画像を回転させたいと思います。

そして私のコードはここにあります

UIImage *image = imageView.image;
UIImage *originalImage = imageView.image;
CGAffineTransform transform = imageView.transform;

        if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2))) {
            image = [UIImage imageWithCGImage:originalImage.CGImage scale:originalImage.scale orientation:UIImageOrientationRight];
        } else if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI))) {
            image = [UIImage imageWithCGImage:originalImage.CGImage scale:originalImage.scale orientation:UIImageOrientationDown];
        } else if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2 * 3))) {
            image = [UIImage imageWithCGImage:originalImage.CGImage scale:originalImage.scale orientation:UIImageOrientationLeft];
        } else if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI * 2))) {
            image = originalImage; // UIImageOrientationUp
        }

期待どおりimage、回転したように表示されます。しかし、回転した後も、この画像は元のままです。imageWithCGImage:scale:orientation:メソッドが機能しなかったことを意味します。

誰かが理由を教えてくれますか?ありがとう。

4

3 に答える 3

1

あなたが使う

UIImage *image = imageView.image;

imageView.image のハンドルを取得し、imageView.image の単なる参照である (UIImage*)image の変更されたイメージを設定しました。したがって、imageView.image を変更する場合は、imageView.image を設定する必要があります。それを変えるためにもう一度

コードの後ろにこれを追加します

imageView.image = image;
于 2013-06-26T03:42:53.070 に答える
0

これは、基本的に理解する必要があるものです。別のオブジェクトへのポインターを取得し、そのポインターを別のものに設定しても、元のオブジェクトには影響しません。次のように考えてください。

Lunch *myLunch = myFriend.CurrentLunch;

これは、あなたのランチが現在の友達のランチであることを意味します。

myLunch = new MisoRamen();

今、あなたの昼食は別の昼食です。

myLunch.InsertWeirdSauce();

あなたは自分のランチにソースを入れただけですが、友達のランチは安全なままです。友達のランチを変更したい場合は、これを行う必要があります。

Lunch *newLunch = new MisoRamen();
newLunch.InsertWeirdSauce();
myFriend.CurrentLunch = newLunch;

おかしなソースが入ったランチを食べた友人はショックで息を呑むでしょう。

于 2013-06-26T03:55:01.710 に答える
0

画像を再度設定する必要があります(すべてのコードの後)

imageView.image = image;
于 2013-06-26T03:32:00.217 に答える