发出旋转UIImage

时间:2013-03-10 12:06:47

标签: ios objective-c cocoa-touch ios6

我正在为iPad开发iOS 6应用程序。我开发了一些旋转UIImage的代码。它适用于方形图像,但是当图像不是方形时,它们会被裁剪,因此您只能看到图像的一部分(正方形)。

我的代码:

UIGraphicsBeginImageContext(image.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextTranslateCTM( context, 0.5f * image.size.width, 0.5f * image.size.height ) ;
CGContextRotateCTM( context, -1.5707963267949) ;

[image drawInRect:(CGRect){ { -imatgetemporal.size.width * 0.5f, -image.size.height * 0.5f }, image.size }];

UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();

我认为问题在于0.5f,但我不知道如何解决它。 我该怎么办?

1 个答案:

答案 0 :(得分:1)

您需要使图形上下文足够大以适应旋转的图像。您正在使用image.size,但应使用旋转的大小作为UIGraphicsBeginImageContext的参数。此外,您对drawInRect的参数不正确。你需要通过以下方式偏移(旋转)原点x,它确定最终图像的y原点:“向上”是原始高度的一半(这使得最终图像完全脱离绘图上下文的顶部)然后“向下”按原始宽度,即最终图像高度。

const CGSize imageSize = image.size;
UIGraphicsBeginImageContext(CGSizeMake(imageSize.height, imageSize.width));

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0.5f * imageSize.width, 0.5f * imageSize.height ) ;
CGContextRotateCTM(context, -1.5707963267949) ;
[image drawInRect:(CGRect){ { imageSize.height * 0.5 - imageSize.width, -imageSize.width * 0.5f }, imageSize }];

UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();