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 的句柄,并且您已经为 (UIImage*)image 设置了更改后的图像,这只是 imageView.image 的引用。因此,如果您希望更改 imageView.image,则应设置 imageView.image再次让它改变

在您的代码后面添加这个

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

您需要再次设置图像(在所有代码之后)

imageView.image = image;
于 2013-06-26T03:32:00.217 回答
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 回答