绕点

时间:2015-06-09 14:25:01

标签: ios objective-c uiimage image-rotation

我想从文件(文件系统上的一个jpeg)旋转一个UIImage计算出的弧度量,但我想围绕图像中的一个点旋转它,以及保持图像的原始大小(图像中不再存在图像数据的透明间隙,以及移动到原始帧之外的图像数据)。我想存储并显示生成的UIImage。我还没有找到任何资源来完成这项任务,任何帮助都会非常感激!

到目前为止,我发现的最接近的事情(稍加修改)如下:

- (UIImage *)rotateImage:(UIImage *)image aroundPoint:(CGPoint)point radians:(float)radians newSize:(CGRect)newSize {     CGRect imageRect = {point,image.size};

UIGraphicsBeginImageContext(image.size);

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, imageRect.origin.x, imageRect.origin.y);
CGContextRotateCTM(context, radians);
CGContextTranslateCTM(context, -imageRect.origin.x, -imageRect.origin.y);
CGContextDrawImage(context, (CGRect){ CGPointZero, imageRect.size }, [image CGImage]);
UIImage *returnImg = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
return returnImg;

}

不幸的是,这会错误地旋转图像(在我的测试中,在比预期多180度附近的某处)。

1 个答案:

答案 0 :(得分:1)

旋转UIImage图像,比方说90度,你可以轻松做到:

imageView.transform = CGAffineTransformMakeRotation(M_PI/2);

将它旋转多次,你可以使用:

UIView animateKeyframesWithDuration method 

并将其锚定到某个点,您可以使用:

[image.layer setAnchorPoint:CGPointMake(....)];