Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 发布图像_Ios_Objective C_Cocoa Touch_Ios6 - Fatal编程技术网

Ios 发布图像

Ios 发布图像,ios,objective-c,cocoa-touch,ios6,Ios,Objective C,Cocoa Touch,Ios6,我正在为iPad开发一款iOS 6应用程序。我开发了一些代码,可以旋转UIImage。它适用于正方形图像,但当图像不是正方形时,它们会被裁剪,因此您只能看到图像的一部分(正方形) 我的代码: UIGraphicsBeginImageContext(image.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM( context, 0.5f * image.size.width,

我正在为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,但我不知道如何解决它。
我能做什么?

您需要使图形上下文足够大,以便旋转图像。您使用的是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();

问题很可能出现在0.5。这当然与直肠的大小和位置有关。自然地,当一个矩形旋转90度的倍数以外的其他角度时,生成的边界框,即封闭矩形,比原始矩形大。它的左上角也会移动。您可以试试drawAtPoint。因此,不需要计算旋转矩形周围边界框的精确帧。但是你仍然需要考虑坐标系中左上角的移动。那么我怎么做呢?我指的是代码。[图像绘制点…[图像绘制点:CGPointMake(0,0)];假设左上边缘为(0,0)。我不工作……现在我只能看到图像的垂直部分,如总长度的1/8。@MartiSerraVivancos抱歉,我昨晚匆忙写道。我已经编辑了我的答案和定位代码。我已经在几个不同大小的图像上测试了新版本,我很有信心它会适合你。