Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.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
Iphone 什么是;“无效帧”;执行变换后的平均值?_Iphone_Objective C_Ios_Cocoa Touch_Core Graphics - Fatal编程技术网

Iphone 什么是;“无效帧”;执行变换后的平均值?

Iphone 什么是;“无效帧”;执行变换后的平均值?,iphone,objective-c,ios,cocoa-touch,core-graphics,Iphone,Objective C,Ios,Cocoa Touch,Core Graphics,我有一个简单的应用程序,允许用户使用平移和收缩手势识别器在屏幕上拖动/缩放图像。苹果API中的常识是,在执行转换后,正如我在缩放方法中所做的那样,帧会变得“无效”。因为即使在执行了变换之后,我仍然不断地使用imageview的帧来计算比例大小和平移距离,并且一切都继续正常工作,所以我想知道帧会变得无效吗 我问这个问题,因为现在我尝试裁剪已经移动和缩放的图像,我使用它的帧值来确定裁剪区域,我得到了有趣的结果。我想知道是否是无效的帧可能是问题所在,或者可能是其他原因。以下是我的代码供您参考: CGR

我有一个简单的应用程序,允许用户使用平移和收缩手势识别器在屏幕上拖动/缩放图像。苹果API中的常识是,在执行转换后,正如我在缩放方法中所做的那样,帧会变得“无效”。因为即使在执行了变换之后,我仍然不断地使用imageview的帧来计算比例大小和平移距离,并且一切都继续正常工作,所以我想知道帧会变得无效吗

我问这个问题,因为现在我尝试裁剪已经移动和缩放的图像,我使用它的帧值来确定裁剪区域,我得到了有趣的结果。我想知道是否是无效的帧可能是问题所在,或者可能是其他原因。以下是我的代码供您参考:

CGRect croppedRect = CGRectMake(fabsf(self.oldImageView.frame.origin.x), fabsf(self.oldImageView.frame.origin.y), 316, 316);
CGImageRef croppedImageRef = CGImageCreateWithImageInRect(self.oldImageView.image.CGImage, croppedRect); 
UIImage *croppedImage = [UIImage imageWithCGImage: croppedImageRef];
CGImageRelease(croppedImageRef);
UIImageView *newImageView = [[UIImageView alloc] initWithImage: croppedImage];

无效帧=有趣的结果

我认为invalid意味着不能保证它的值是错误的,但它可能是错误的。你侥幸使用了这个框架

如果您有已转换的视图,并且需要框架,则可以使用以下代码:

CGRect frame = [[view superview] convertRect:view.bounds fromView:view];
只要它不旋转。如果旋转,“帧”不能表示为CGRect,它只能表示与轴对齐的矩形。您可以使用
convertPoint
转换边界的每个角点,如果该信息对您的程序有用的话

或设置未旋转的框架

view.bounds = [view convertRect:newFrame fromView:[view superview]];

在这种情况下,无论如何都不应该使用框架。框架是在superview的坐标系中定义的。在图像的坐标系中指定CGImageCreateWithImageInRect的参数,我怀疑该参数与图像视图的坐标系相同,即使在变换时也是如此。您应该在代码中使用边界来代替框架。或(0.0,0.0)作为原点。我不太清楚你想达到什么目的。

你确定它是无效的,而不是无效的吗?这些东西是不同的,这意味着它需要重新绘制,但并不意味着大小不对。我不知道“无效”在这里是什么意思context@Dani:我相信CoDEFRo指的是:我更仔细地阅读了你的代码,我不确定这个答案是否能解决你的问题。但是你应该把它应用到其他使用frame的情况,因为那些代码可能不可靠。谢谢你,那一行代码正是我一直在寻找的。