这是我的问题:
当我得到它应该旋转的度数时,我想旋转我的图像。
我的代码在这里
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:
不起作用。
有人可以告诉我为什么?感谢。
答案 0 :(得分:1)
您使用
UIImage *image = imageView.image;
获取imageView.image的句柄,并为(UIImage *)图像设置更改后的图像,这只是imageView.image的引用。如果你想要更改imageView.image,你应该设置再次使用imageView.image进行更改
在您的代码后面添加此内容
imageView.image = image;
答案 1 :(得分:1)
这是您需要从根本上理解的东西。当您获得指向另一个对象的指针,然后将该指针设置为其他对象时,它不会影响原始对象。想一想:
Lunch *myLunch = myFriend.CurrentLunch;
这意味着你的午餐是朋友的午餐。
myLunch = new MisoRamen();
现在你的午餐是另一个午餐。
myLunch.InsertWeirdSauce();
你刚刚在自己的午餐中加入酱汁,而你朋友的午餐仍然安全。如果你想改变你朋友的午餐,你必须这样做。
Lunch *newLunch = new MisoRamen();
newLunch.InsertWeirdSauce();
myFriend.CurrentLunch = newLunch;
现在,你的朋友吃了一顿带有奇怪酱汁的午餐时会感到震惊。
答案 2 :(得分:0)
您需要再次设置图像(在所有代码之后)
imageView.image = image;